var_dump(ctype_digit(1)); //false
var_dump(ctype_digit('1')); //true
var_dump(ctype_digit(123)); //false
var_dump(ctype_digit(1234)); //true
это только у меня такие глюки? иль я что-то не учел при использовании функции?
Fashion, синтаксис функции не позволит тебе юзать цифру не заключенную в кавычки:
ctype_digit(1234)
Тоесть должно быть
ctype_digit('1234')
А вот,
var_dump(ctype_digit(123)); //false
var_dump(ctype_digit(1234)); //true
Безусловно странно.
$ php -r "var_dump(ctype_digit(1)); //false
> var_dump(ctype_digit('1')); //true
> var_dump(ctype_digit(123)); //false
> var_dump(ctype_digit(1234)); //true "
bool(false)
bool(true)
bool(false)
bool(true)
php -r "var_dump(ctype_digit('1')); //false
> var_dump(ctype_digit('1')); //true
> var_dump(ctype_digit('123')); //false
> var_dump(ctype_digit('1234')); //true "
bool(true)
bool(true)
bool(true)
bool(true)
как-то так выдает)
Default_mo, я в курсе ) странности заключаются в остальных вариантах применения
01 Мар 2011, 14:42Ant0ha, при приведении к строковому типу, будет true , это понятно
но меня интересует,почему странное поведение функции наблюдается при передаче данных числового типа
Лучше немного обернуть эту функцию:
function digit($str) {
return (is_int($str) AND $str >= 0) OR ctype_digit($str);
}
FORUS, можно еще проще*, но зачем? функция должна работать корректно.
*
function a($i){return ctype_digit((string)$i);}