2011-05-11 12 views
0

나는 array이고, 처음의 13 값은 integer입니다.ctype_digit - 이상한 행동

이제 내가 할 경우 :

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

전체 배열의 'print_r'을 표시 할 수 있습니까? –

+0

'$ pos1'은'ctype_digit'을 사용하기 전에 무엇을 포함합니까? – hsz

+0

'print_r ($ pos1)'을 시도해보십시오. 인쇄는 어떻게됩니까? –

답변

2

이 조금 이상한 (사실)하지만 ctype_digit() 엄격하게 문자열 PHP는 문자열로 캐스팅 나던 왜 몰라

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

을 필요로한다. ctype_digit() 기능은 엄격하게 문자열을 필요로하기 때문에 ctype_digit() 부울

echo true; // "1" 
echo false; // "" 
+0

예 ... 정말 이상합니다 !!! :) – kwichz

1

예를 반환하기 때문에

그러나, 출력의 1는 타입 캐스트에서 온다. PHP는 취급해서 당신은 출력 1-을 받고 그

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

// 출력을주기

echo ctype_digit($pos1[12]);

TRUE

첫 번째 (13 개) 값이 정수에 배열 때문에
echo " - " ; //Giving output * - * 
echo ctype_digit($pos1[13]); 

FALSE 및 14 번째는 정수가 아닙니다.