我有一个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 )
为什么?
答案 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个值不是整数。