Cómo convertir string a número en PHP: 5 métodos prácticos

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é strings y números en PHP son un drama eterno

\n

Imagina esto: estás programando una calculadora de envíos y el usuario ingresa la cantidad de productos como un string "5". Intentas sumarle 10 y obtienes "510" en lugar de 15. ¿Te suena familiar? ¡Bienvenido al mundo de la conversión de tipos en PHP!

\n

La pregunta "How do I convert a string to a number in PHP?" es una de las más populares en Stack Overflow (más de 2 millones de visitas). Y con razón: PHP es conocido por su tipado dinámico, que a la vez simplifica la vida y crea trampas.

\n

En esta guía, exploraremos 5 formas fiables de convertir un string a número, desmentiremos mitos y aprenderemos a evitar bugs. ¡Vamos allá!

\n\n

Teoría: ¿qué ocurre bajo el capó de PHP?

\n

PHP es un lenguaje de tipado dinámico. Una variable puede ser un string y, un segundo después, un número. Pero hay un detalle:

\n
    \n
  • Conversión implícita de tipos — PHP decide por sí mismo cómo interpretar los datos (y a menudo se equivoca).
  • \n
  • Conversión explícita de tipos — tú tomas el control.
  • \n
\n

Cuando escribes "5" + 10, PHP convierte automáticamente el string "5" en un número. Pero prueba con "5 manzanas" + 10 y obtendrás 15 (PHP descarta silenciosamente " manzanas"). Y "manzanas 5" + 10 dará 10 (el string se considera cero). ¿Caos? Sí. Pero vamos a poner orden.

\n\n

Método 1: Operador de conversión de tipo (int) y (float)

\n

La forma más rápida y sencilla es usar el casteo:

\n
<?php\n$string = "42.8";\n$int = (int)$string;      // 42 (parte entera)\n$float = (float)$string;  // 42.8\n\necho $int;   // 42\necho $float; // 42.8\n?>
\n

Importante: (int) descarta la parte decimal sin redondear. Para redondear, usa round() después de la conversión.

\n

Cuándo usarlo: cuando estés seguro de que el string contiene solo un número y necesites una conversión rápida.

\n\n

Método 2: Funciones intval() y floatval()

\n

Son los "hermanos mayores" del casteo: más legibles y flexibles:

\n
<?php\n$string = "123.45abc";\n\n$int = intval($string);     // 123\n$float = floatval($string); // 123.45\n\n// Con indicación de base numérica (solo para intval)\n$hexString = "1A";\n$hexInt = intval($hexString, 16); // 26 (convierte un string hexadecimal)\n\necho $int;    // 123\necho $float;  // 123.45\necho $hexInt; // 26\n?>
\n

Ventaja: intval() puede trabajar con diferentes bases numéricas (binaria, octal, hexadecimal). floatval() solo con decimal.

\n

Cuándo usarlo: cuando necesites procesar "basura" al final del string o trabajar con bases numéricas no estándar.

\n\n

Método 3: Función settype() — conversión con retorno true/false

\n

¿Quieres no solo convertir, sino también verificar si la operación fue exitosa? Usa settype():

\n
<?php\n$string = "99.9";\n$result = settype($string, "float"); // true\n\necho $string; // 99.9 (ahora es float)\necho $result; // 1 (true)\n\n// Si el string no es numérico\n$badString = "hola";\n$result = settype($badString, "integer"); // false\n\necho $badString; // 0 (convertido a cero)\necho $result;    // (vacío, false)\n?>
\n

Importante: settype() modifica la variable original, no devuelve un nuevo valor. Es útil cuando necesitas garantizar que el tipo ha cambiado.

\n

Cuándo usarlo: cuando requieras verificar el éxito de la conversión (por ejemplo, en entradas de usuario).

\n\n

Método 4: Trucos aritméticos (y por qué es mejor no usarlos)

\n

Sí, puedes escribir $number = $string + 0 — PHP convertirá el string a número automáticamente. O $number = $st

Blogs

Book Recommendations