2014-09-09 1 views
11

이 배열에없는 키를 사용하여 배열에 액세스하려고하면 php가 "정의되지 않은 인덱스"알림 오류를 발생시킵니다. 문자열에 대해 동일한 작업을 수행하려고하면 "잘못된 문자열 오프셋"경고가 발생합니다. 이것은 예상되는 동작이며이를 처리하는 방법을 알고 있습니다.부울 값에 대한 배열 인덱스 액세스가 어떤 종류의 오류도 발생시키지 않는 이유는 무엇입니까?

ini_set('display_errors', 1); 
error_reporting(E_ALL); 

$var = false; 
var_dump($var['test']); 

내가 몇 가지 오류 메시지를 볼 것으로 예상하지만, $var['test']은 자동으로 NULL로 설정 : 내가 부울 또는 정수 값이 시도 할 때

는 그러나 아무 반응이 없습니다.

그럼 왜 PHP가 배열 키를 통해 부울 값에 액세스 할 수 있도록 허용합니까? 구멍 "배열 키를 통해 액세스 부울 값"문구가 나에게 끔찍하게 들리지만, PHP로 할 수 있습니다.

+1

오류 메시지를 원하십니까? –

+0

@Dagon "정의되지 않은 색인"이 예상됩니다. 내가 원하는 오류는 실제로 중요하지 않습니다. 왜 오류 메시지가 전혀 없는지 궁금합니다. –

+0

실제로 이것을 테스트했습니다.'$ var = 123; '이것은 정수에서도 발생합니다. – Ghost

답변

11

슬픈 일이지만 문서화 된 동작입니다.

http://php.net/manual/en/language.types.string.php

주 : (적절한 인터페이스를 구현하는 배열 또는 객체를 포함하지 않는) 다른 유형 []를 사용하여 또는 {} 조용히 NULL 반환의

액세스 변수.