변수 $ foo를 함수에 전달합니다. 이 입력 변수는 배열 또는 문자열 일 수 있습니다. 이 배열 인 경우, 내가 설정하려면 :isset()의 카운터 직관적 인 동작
$name = $foo['name']
를 그리고이 문자열 인 경우, 다음 내가 설정하려면 :
$name = $foo
는이를 위해, 나는 다음과 같은 코드를 작성 :
$name = isset($foo['name']) ? $foo['name'] : $foo
불행히도, 이것은 작동하지 않습니다.
이유 : isset ($ foo [ 'name'])은 $ foo가 문자열 일 때 TRUE를 반환합니다.
이 동작은 나에게 놀라운 일입니다. $ foo [ 'name']가 설정되지 않았기 때문에 isset ($ foo [ 'name'])가 FALSE를 반환 할 것으로 예상했습니다. 누군가가이 겉으로보기에 반 직관적 인 행동을 설명 할 수 있습니까? 또는 $ foo [ 'name']에서 FALSE를 반환하는 isset() 대신 $ foo가 문자열 일 때를 제안합니까?
UPDATE : 아래 참조 크리스토퍼의 제안 :
$name = (is_array($foo) && isset($foo['name'])) ? $foo['name'] : $foo;
대단히 감사합니다. 이것은 정확하게 제가 찾고 있던 설명입니다. – moondog
당신은 매우 환영합니다, user606696 - 아니면 24601라고 말해야합니까! – Christopher