Xwab
Форумыnavigate_nextПрограммирование на PHP

ctype_digit
Сообщения
Fashion

var_dump(ctype_digit(1)); //false
var_dump(ctype_digit('1')); //true
var_dump(ctype_digit(123)); //false
var_dump(ctype_digit(1234)); //true
 это только у меня такие глюки? иль я что-то не учел при использовании функции?

01 Мар 2011, 14:33
Default_mo

Fashion, синтаксис функции не позволит тебе юзать цифру не заключенную в кавычки:


ctype_digit(1234)

Тоесть должно быть
ctype_digit('1234')

А вот,
 
var_dump(ctype_digit(123)); //false
var_dump(ctype_digit(1234)); //true
Безусловно странно.

01 Мар 2011, 14:40
Ant0ha


$ 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)


как-то так выдает)

01 Мар 2011, 14:41
Fashion

Default_mo, я в курсе ) странности заключаются в остальных вариантах применения

01 Мар 2011, 14:42
Fashion

Ant0ha, при приведении к строковому типу, будет true , это понятно  но меня интересует,почему странное поведение функции наблюдается при передаче данных числового типа

01 Мар 2011, 14:43
FORUS

Лучше немного обернуть эту функцию:

function digit($str) {
return (is_int($str) AND $str >= 0) OR ctype_digit($str);
}

01 Мар 2011, 15:47
Fashion

FORUS, можно еще проще*, но зачем? функция должна работать корректно.


*
function a($i){return ctype_digit((string)$i);}

01 Мар 2011, 15:58
Xime

багрепорть

01 Мар 2011, 16:20
DarveL

Почитай ман поймешь почему так.
---
функция работает правильно

01 Мар 2011, 16:22
DarveL

FORUS, это не самый лучший вариант

01 Мар 2011, 16:25
Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.