2009-05-07 6 views
14

오류가 발생하지 않도록 배열에 키가 있는지 빠르게 확인하고 싶습니다.깊은 배열 값이 있는지 확인하는 방법

예를 들어, I는 전혀 $의 도착 [F ''] [ 'B']에서 어떤 변수가 없을 수도이

$arr['f']['b']['g'] = array('a', 'b', 'c',) ; 

또는 어레이와 같은 배열을 가질 수있다 :

$arr['f']['x'] = array() ; 

$ arr [ 'f'] [ 'b'] [ 'g'] (아마) 내용을 참조 할 때 테스트에서 반복을 피할 수있는 방법은 무엇입니까?

if (isset($arr['f']) && 
    isset($arr['f']['b']) && 
    isset($arr['f']['b']['g']) /* ... yawn */) { 
    /* blah */ 
} 

이 난 주어진 배열 값이 참조가 있는지 여부를 확인하기위한 terser 방법이 있어야합니다? 내가 추구하는 가치와 모든 조상의 존재에 대해 테스트해야하는 것은 너무 지나치게 길어 보인다. 어떤 상황에서는 의미가 있습니다, 예,하지만 전부는 아닙니다. 예를함으로써

:이 말을 나타낼 수, 수표 각을 포함하지 않고 내가하는 방식이 빠르게 카트이 항목이 있는지 여부를 확인하려면 사용자 -> 세션 -> 카트의 사용자 여부 존재는, 다음 세션의 존재 여부, 다음 카트의 존재 여부, 다음 ...

편집 : 내가 찾는 게 아니에요 " 'g'의 키 이름과 배열 값을 않는 존재" "f => b => g의 조상을 가진 배열 값이 존재합니다".

답변

25

다음은 예상대로 작동합니다 : 이러한 요소 중 하나가 정의되지 않은 경우

if(isset($a['a']['b']['c'])) 

isset()는 false를 돌려줍니다.

+0

허! Well spotted : –

+3

명확히하기 위해, 이것은'$ a'의 존재를 안전하게 테스트합니다 :'$ a'가 설정되어 있지 않으면 false를 반환합니다. –

+0

와우, 이것이 효과가 없다고 수년 동안 확신했습니다. Lol. – baldrs

0

array_search의 의견에는 다차원 검색을위한 코드가 있습니다. 도움이 될 수도 있습니다.

+0

답장을 보내 주셔서 감사합니다. 해당 페이지에는 12 개가 넘는 예제 코드 블록이 있습니다 (더 이상은 계산하지 않았습니다). 그러나 어느 것이 효율적인지 솔루션을 제공 할 수는 없습니다 (예 : 공연). 내가 뭘하고 있는지 명확히하기 위해 질문이 업데이트됩니다. 다시 한 번 감사드립니다! –

관련 문제