Для меня это звучит странно:
$test_1 = 'string';
$test_2 = '0';
var_dump(intval($test_1)); // Output: int 0
var_dump(intval($test_2)); // Output: int 0
$can_cast = intval($test_2) ? 'sure' : 'nope'; // Wrong!!!
Так что с string
в int
преобразование intval
возвращает 0 .Хорошо, но он возвращает 0 также, когда строка действительно может быть приведена к нулю (потому что - это ноль), таким образом, действительна.разрешает '0' как строку и запрещает 'строку')?
РЕДАКТИРОВАТЬ : хорошо, позвольте мне сказать, что я знаю, что могу использовать is_numeric
.But is_numeric('2.3')
возвращает true
, так что это не может помочь.И:
$test = '0';
var_dump(is_numeric($test) && intval($test)); // Fail!!!