2013-06-04 2 views
1

배열의 연관 배열이 있습니다. 연관 배열 배열은 항상 동일한 하위 배열을 포함하지는 않습니다. 특정 하위 배열이있는 경우 루프를 수행하고 싶습니다. 당신이는 isset를 생략하면PHP : 연관 배열의 서브 배열을 감싸는 우아한 방법

if (isset($drinks['fizzy_drinks'])) { 
    foreach ($drinks['fizzy_drinks'] as $fizzy_drink) { 
     // do something with $fizzy_drink 
    } 
} 

당신이 fizzy_drinks 경우 통지를 얻을 것이다 :

if (array_key_exists('fizzy_drinks', $drinks)) { 

    foreach ($drinks['fizzy_drinks'] as $fizzy_drink) { 

     // do something with $fizzy_drink 
    } 
} 
+1

합니다. 단순하면서도 효과적입니다. 이 질문은 http://codereview.stackexchange.com/에 더 적합합니다. – Revent

답변

0

별로입니다. 나는 당신의 솔루션이 매우 우아하고 읽기 쉽다고 생각합니다. 내가 할 것 : 정말 배열에 당신이 시도 값이 foreach를 사용하는 경우

if (array_key_exists('fizzy_drinks', $drinks) && is_array($drinks['fizzy_drinks'])) { 
    foreach ($drinks['fizzy_drinks'] as $fizzy_drink) { 
     // do something with $fizzy_drink 
    } 
} 

항상 좋은

확인 할 수 있습니다.

1

별로,이만큼 우아한이수록입니다 : 다음 코드를 할 수있는 더 우아한 방법이 있나요 $ drink가 배열이 아닌 경우 경고가 설정됩니다.

1

당신은 is_array를 사용하는 것을 선호 있습니다

if(is_array($drinks['fizzy_drinks'])) { 
    foreach ($drinks['fizzy_drinks'] as $fizzy_drink) { 
    // do something with $fizzy_drink 
    } 
} 
+0

작동하지만 $ drink에 'fizzy_drinks'항목이없는 경우에도 여전히주의 사항을 알 수 있습니다. – LexLythius

1

당신은 사용할 수 없습니다 :

if (! empty($drinks['fizzy_drinks']) && is_array($drinks['fizzy_drinks'])) { 
    foreach ($drinks['fizzy_drinks'] as $fizzy_drink) { 
     // do something with $fizzy_drink 
    } 
} 

아무런 경고없이 통지 내가 할 것입니다 방법

관련 문제