Cómo convertir una cadena a número en PHP: guía paso a paso

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción: ¿por qué las cadenas no quieren sumarse?

\n\n

Cada desarrollador que haya escrito alguna vez en PHP se ha encontrado con una situación en la que, en lugar del número esperado, se obtiene un resultado extraño. Intentas sumar dos variables obtenidas de un formulario o base de datos, y PHP devuelve algo como 1520 en lugar de 35. ¿Te suena? Este es un problema clásico: convertir una cadena a número en PHP.

\n\n

PHP es un lenguaje de tipado dinámico. Esto es a la vez una bendición y una maldición. Por un lado, intenta adivinar lo que quieres decir y convierte los tipos automáticamente. Por otro lado, estas "adivinanzas" a menudo conducen a errores difíciles de detectar. Hoy analizaremos todas las formas de convertir una cadena a número en PHP, desde lo simple hasta lo avanzado, y aprenderemos a hacerlo correctamente.

\n\n

Respuesta rápida: 4 métodos en 30 segundos

\n\n

Si necesitas una solución rápida, aquí tienes una chuleta. Pero no te apresures a cerrar el artículo: cada método tiene sus particularidades y trampas.

\n\n
<?php\n// Método 1: Conversión explícita de tipo\n$number = (int) "42";          // int(42)\n$float  = (float) "3.14";     // float(3.14)\n\n// Método 2: Función intval()\n$number = intval("42");       // int(42)\n\n// Método 3: Función floatval() / doubleval()\n$float  = floatval("3.14");   // float(3.14)\n\n// Método 4: Con settype()\n$str = "42";\nsettype($str, "integer");     // ahora $str = int(42)\n?>
\n\n

Los cuatro métodos funcionan, pero se comportan de manera diferente en situaciones límite. Analicemos cada uno en detalle.

\n\n

1. Conversión explícita de tipos: (int) y (float)

\n\n

La forma más rápida y obvia de convertir una cadena a número en PHP es usar los operadores de conversión de tipos. Funcionan como un "cambio forzado" del tipo de variable.

\n\n

Ejemplos con (int)

\n\n
<?php\necho (int) "42";           // 42\necho (int) "3.99";         // 3 (¡la parte decimal se descarta!)\necho (int) "42 manzanas";  // 42 (número al inicio)\necho (int) "manzana 42";   // 0 (no puede reconocer el número)\necho (int) "";             // 0\necho (int) null;           // 0\n?>
\n\n

Importante: PHP intenta encontrar un número al inicio de la cadena. Si la cadena comienza con letras, el resultado será 0. Este comportamiento a menudo causa errores, especialmente al trabajar con entrada de usuario.

\n\n

Ejemplos con (float)

\n\n
<?php\necho (float) "3.14";       // 3.14\necho (float) "3,14";       // 3.0 (¡la coma no funciona!)\necho (float) "2.99 euros"; // 2.99\necho (float) "abc";        // 0\n?>
\n\n

Truco: Recuerda que PHP usa el punto como separador decimal. Si los usuarios ingresan números con coma (como es común en algunos países), primero debes reemplazar la coma por un punto usando str_replace(',', '.', $str).

\n\n

2. Funciones intval() y floatval()

\n\n

Estas funciones son una versión más "inteligente" de la conversión explícita. Hacen lo mismo, pero permiten especificar la base numérica para intval().

\n\n
<?php\n// intval() — conversión a número entero\necho intval("42");            // 42\necho intval("1010", 2);       // 10 (¡sistema binario!)\necho intval("FF", 16);        // 255 (hexadecimal)\necho intval("42.99");         // 42 (la parte decimal se descarta)\n\n// floatval() — conversión a número de punto flotante\necho floatval("3.14");        // 3.14\necho floatval("2.71828");     // 2.71828\n?>
\n\n

Cuándo usarlas: intval() es indispensable si trabajas con números en diferentes bases (por ejemplo, analizando códigos de color HEX). Para números normales, prácticamente no hay diferencia con (int).

\n\n

3. Función settype(): conversión in situ

\n\n

A diferencia de los métodos anteriores, settype() no devuelve un nuevo valor, sino que

Blogs

Book Recommendations