Nie jest bezpośrednim odpowiednikiem pareseInt()
w PHP, ponieważ PHP nie posiada typ NaN
danych. parseInt()
spowoduje wygenerowanie NaN
, jeśli nie można przeanalizować wartości.
Poza tym parseInt()
ma parametr radix, który nie daje żadna z opcji PHP.
Ale powiedział, że jeśli wszystko, co chcesz zrobić, to włączyć ciąg do liczby całkowitej, to istnieje kilka opcji:
$int = (int)$string;
$int = intval($string);
$int = settype($string,'integer');
Te trzy będą wszystkie działają w taki sam sposób. Mogą występować pewne skrajne przypadki, w których intval()
różni się od pozostałych dwóch, ale ogólnie rzecz biorąc, zamieniają one łańcuch w int. W przypadku braku NaN
, wszystkie one wyprowadzają 0
(zero), jeśli łańcuch nie jest liczbowy i nie można go przeanalizować. Ale to powinno wystarczyć dla większości celów sanitarnych DB.
Jeśli naprawdę chcesz, aby błąd NaN
był wyświetlany, najbliżej otrzymasz: null
. Formularz ten można uzyskać stosując filter_var()
:
$value = filter_var(FALSE, FILTER_VALIDATE_INT, FILTER_NULL_ON_FAILURE);
Jeśli chcesz po prostu sprawdzić, czy ciąg jest numeryczna, funkcja is_numeric()
może to zrobić:
$bool = is_numeric($string);
jednak zwraca true dla miejsc po przecinku, a także dla notacja naukowa, więc może nie być idealny w większości sytuacji.Lepszym rozwiązaniem jest ctype_digit()
która zwraca true jeśli ciąg składa się wyłącznie z cyfr:
$bool = ctype_digit($string);
Jeśli non e od tego garniturach, zawsze istnieje opcja regex, używając preg_match()
lub preg_replace()
, ale są to na pewno przesadą tego rodzaju scenariusz.
sprawdź [php.net/Type Casting] (http://php.net/manual/en/language.types.type-juggling.php) – air4x
Dlaczego po prostu nie używać intval? – endy