No hay un equivalente directo a pareseInt()
en PHP PHP porque no tiene un tipo de datos NaN
. parseInt()
producirá NaN
si el valor no se puede analizar.
Además, parseInt()
tiene el parámetro radix, que ninguna de las opciones de PHP le brinda.
Pero dicho esto, si todo lo que quiere hacer es girar una cadena en un entero, entonces hay varias opciones:
$int = (int)$string;
$int = intval($string);
$int = settype($string,'integer');
Esos tres todo funcionará de la misma manera. Puede haber algunos casos de borde donde intval()
difiere de los otros dos, pero en general, convertirán una cadena en un int. En ausencia de NaN
, todos emiten 0
(cero) si la cadena no es numérica y no se puede analizar. Pero esto debería ser suficiente para la mayoría de los propósitos de saneamiento DB.
Si realmente quiere un NaN
por error, lo más cerca que obtendrá es null
. Usted puede conseguir esto usando filter_var()
:
$value = filter_var(FALSE, FILTER_VALIDATE_INT, FILTER_NULL_ON_FAILURE);
Si lo que desea es comprobar que la cadena es numérico, la función is_numeric()
puede hacer eso:
$bool = is_numeric($string);
Sin embargo, devuelve cierto para los decimales y también para notación científica, por lo que puede no ser perfecto para la mayoría de las situaciones.Una mejor opción es ctype_digit()
que devuelve verdadero si la cadena se compone únicamente de dígitos:
$bool = ctype_digit($string);
Si no E de este trajes, siempre existe la opción de expresiones regulares, utilizando preg_match()
o preg_replace()
, pero estas son sin duda una exageración para este tipo de escenario
check [php.net/Type Casting] (http://php.net/manual/en/language.types.type-juggling.php) – air4x
¿Por qué no usar intval? – endy