non c'è un equivalente diretto a pareseInt()
in PHP perché PHP non ha un tipo di dati NaN
. parseInt()
produrrà NaN
se il valore non può essere analizzato.
Inoltre, parseInt()
ha il parametro radix, che nessuna delle opzioni PHP fornisce.
Ma detto questo, se tutto quello che vogliamo fare è trasformare una stringa in un intero, poi ci sono diverse opzioni:
$int = (int)$string;
$int = intval($string);
$int = settype($string,'integer');
Quei tre tutto il lavoro più o meno allo stesso modo. Potrebbero esserci alcuni casi limite in cui lo intval()
differisce dagli altri due, ma in generale trasformeranno una stringa in un int. In assenza di NaN
, tutti producono 0
(zero) se la stringa non è numerica e non può essere analizzata. Ma questo dovrebbe essere sufficiente per la maggior parte dei fini di risanamento del DB.
Se si desidera realmente un errore NaN
, il più vicino si ottiene è null
. È possibile ottenere questo usando filter_var()
:
$value = filter_var(FALSE, FILTER_VALIDATE_INT, FILTER_NULL_ON_FAILURE);
Se si desidera solo per verificare che la stringa è numerica, la funzione is_numeric()
può farlo:
$bool = is_numeric($string);
Tuttavia, restituisce vero per i decimali e anche per notazione scientifica, quindi potrebbe non essere perfetto per la maggior parte delle situazioni.Una soluzione migliore è ctype_digit()
che restituisce vero se la stringa è fatto solo di cifre:
$bool = ctype_digit($string);
Se non e di questo si adatta, c'è sempre l'opzione regex, utilizzando preg_match()
o preg_replace()
, ma questi sono sicuramente eccessivo per questo tipo di scenario.
controllare [php.net/Type Casting] (http://php.net/manual/en/language.types-tygl-juggling.php) – air4x
Perché non usare solo intval? – endy