2016-12-23 4 views
0

내 예입니다PHP, NULL 변수의 키 확인이 설정 되니? 여기

내가 is($data['test'])를 실행 한 후, $data$data['test'] = null

어떤 아이디어가되도록

$data = null; 

var_dump($data); // returns null 

is($data['test']); 

var_dump($data); // returns array (size=1) 
       //   'test' => null 

function is(&$var, $default = null) 
{ 
    return isset($var) ? $var : $default; 
} 

통지 왜 이런 행동을?

나는 null을 얻으려고합니다. 나는 PHP 7

편집을 실행하고 있습니다 : 그것은 그 결과

+0

첫 번째 인수를 참조로 전달하지 않으면 작동 함을주의하십시오.'function is ($ var, $ default = null)' –

+0

@FredB 예, 그렇습니다. 그러나 때로는 통지를받습니다. – Patrioticcow

답변

0

당신은 값이 함수에 전달되기 때문에 (심지어 참조) 함수에 대한 비 기존 키와 변수를 전달할 수 없습니다.

$data이 있고 $data['test'] 일 경우 다음 줄에 $data 변수가 배열로 업데이트됩니다.

따라서 귀하의 경우 is($data['test']);을 사용하면 변수가 업데이트됩니다.

그런 다음 기능으로 이동하여 isset($var)을 확인합니다. 변수가 이미 업데이트되었으므로 이미 설정되었습니다. 따라서 issettrue이됩니다. 그 반환은 $data['test'] 인 업데이트 된 변수를 포함합니다.

@Fred B의 솔루션이이 경우에 효과가 있다고 생각합니다.

+0

'$ data ['test ']'처음 평가된다. – Patrioticcow

0

을 시도 array_key_exists()를 사용하여 산출하고 키가 발견되지 않는 경우는 null를 돌려 이유를 바로 확인하지 & 상징입니다.

+0

이 작동하지 않습니다. '$ data'는 배열이 아닙니다. – Patrioticcow

0

이 솔루션은 그래도 덜 우아하고 작동하는 것 같다 :

is($data, 'test'); 

var_dump($data); // returns array (size=1) 
       //   'test' => null 

function is($var, $key, $default = null) 
{ 
    return isset($var[$key]) ? $var[$key] : $default; 
} 
+0

예, 열쇠 또는 ​​변수가 존재하는지 확인하는 방법을 이해합니다. 여러 가지 방법이 있습니다. 특히 그 &에 관한 기호가 궁금합니다. – Patrioticcow