¿Cómo convierto una cadena en un número en PHP?
Quiero convertir este tipo de valores, '3'
, '2.34'
, '0.234343'
etc. en un número. En JavaScript podemos usar Number()
, pero ¿hay algún método similar disponible en PHP?
Input Output
'2' 2
'2.34' 2.34
'0.3454545' 0.3454545
Aceptado
Normalmente no es necesario hacer esto, ya que PHP forzará el tipo por usted en la mayoría de las circunstancias. Para situaciones en las que desea convertir explícitamente el tipo, conviértalo :
$num = "3.14";
$int = (int)$num;
$float = (float)$num;
Hay algunas maneras de hacerlo:
Convierta las cadenas a tipos de datos primitivos numéricos:
$num = (int) "10"; $num = (double) "10.12"; // same as (float) "10.12";
Realice operaciones matemáticas en las cuerdas:
$num = "10" + 1; $num = floor("10.1");
Utilice
intval()
ofloatval()
:$num = intval("10"); $num = floatval("10.1");
Usar
settype()
.
Para evitar problemas prueba intval($var)
. Algunos ejemplos:
<?php
echo intval(42); // 42
echo intval(4.2); // 4
echo intval('42'); // 42
echo intval('+42'); // 42
echo intval('-42'); // -42
echo intval(042); // 34 (octal as starts with zero)
echo intval('042'); // 42
echo intval(1e10); // 1410065408
echo intval('1e10'); // 1
echo intval(0x1A); // 26 (hex as starts with 0x)
echo intval(42000000); // 42000000
echo intval(420000000000000000000); // 0
echo intval('420000000000000000000'); // 2147483647
echo intval(42, 8); // 42
echo intval('42', 8); // 34
echo intval(array()); // 0
echo intval(array('foo', 'bar')); // 1
?>