2013-04-22 3 views
1

로 평가됩니다.배열의 키는 항상 첫 번째 문자 (참)

그러나 : $person['jibberish']이 문자열 $ 사람의 첫 번째 문자를 반환으로

$person = 'bill'; 

isset($person['jibberish'])은 TRUE로 평가합니다.

의도 한대로입니까? 오늘 내 말에 is_array()을 포함시키지 않고 항상 empty($array['key'])을 사용했기 때문에 이것은 나에게 충격적이었습니다.

+0

이 PHP 현악기와> INT 타입의하지 않은 100 % -obvious 행동의 좋은 예입니다 주조. '$ person = 'bill'을 시도해보십시오. var_dump (isset ($ person ['10 green bottles ']));'- http://php.net/manual/en/language.types.type-juggling.php 및 http://php.net/manual을 참조하십시오. /en/language.types.string.php#language.types.string.substr이 동작이 나타나는 이유에 대한 키입니다. 기억해야 할 것은 C 문자열을 처리한다는 것입니다. 따라서 모든 것은 실제로 바이트 배열입니다. – DaveRandom

+0

숫자로 시작하는 문자열은 캐스팅을 int로 변환 할 때 해당 숫자가됩니다. 따라서 (int) '10 green bottles '== 10; // true. 숫자로 시작하지 않으면 0으로 변환됩니다. – fullybaked

답변

3

$person이 문자열이므로 배열 형 인덱스는 int으로 변환됩니다.

(int)'any non-numeric string in the world' == 0 

임의의 숫자가 아닌 임의의 문자열을 색인으로 사용하면 임의의 문자열의 첫 문자를 자연스럽게 가져옵니다.

1

배열이 아닌 문자열의 정의되지 않은 색인을 인쇄하고 있습니다. 당신이 PHP에서 문자열의 인덱스를 인쇄하려고하면 , 당신은 문자열의 각 문자를해야합니다 :

$person = 'bill'; 
$person[0] //b 
$person[1] //i 
$person[2] //l 
$person[3] //l 
관련 문제