ctype_digit - 奇怪的行为

时间:2011-05-11 10:07:55

标签: php

我有一个array,第一个13值为integer

现在,如果我这样做:

array_push($pos1, 100);

我认为值14也是Integer。但事实上,做:

echo ctype_digit($pos1[12])." - ".ctype_digit($pos1[13]);

输出为1 -

这是print_r,按要求:

Array ( [0] => 0 
        [1] => 1 
        [2] => 2 
        [3] => 3 
        [4] => 4 
        [5] => 5 
        [6] => 6 
        [7] => 7 
        [8] => 8 
        [9] => 9 
        [10] => 10 
        [11] => 11 
        [12] => 12 
        [13] => 100 )

为什么?

2 个答案:

答案 0 :(得分:2)

这实际上有点奇怪,但ctype_digit()严格要求字符串

echo ctype_digit((string) $pos1[12])." - ".ctype_digit((string) $pos1[13]); // "1 - 1"

我不知道,为什么PHP不会将其转换为字符串。

但是,输出中的1来自类型转换,因为ctype_digit()返回布尔值

echo true; // "1"
echo false; // ""

答案 1 :(得分:1)

是的,因为ctype_digit()函数严格要求字符串。您只是因为PHP处理它的

而得到输出1-
echo ctype_digit($pos1[12])." - ".ctype_digit($pos1[13]);

as

echo ctype_digit($pos1[12]); //输出 TRUE

echo " - " ;  //Giving output * - *
echo ctype_digit($pos1[13]);

FALSE 因为在数组中,前13个值是整数,第14个值不是整数。