2013-12-11 2 views
0
echo $merchant_pic['shop']['campaign']; 

나는 그것이 campaign의 값을 줄 것이라고 알고 있습니다. 하지만 먼저 배열의 첫 번째 레이어가 무엇인지 알아야합니다. shop입니다.어레이의 첫 번째 레이어가 무엇인지 모른 채 배열의 내부에 배열을 가져 오십시오

문제는 : 첫 번째 레이어는 무엇이든 될 수 있습니다.

첫 번째 레이어가 무엇인지 알지 못하고 정의하지 않고 배열의 두 번째 레이어의 값을 가져 오는 방법이 있습니까? 당신이 $merchant_pic 내부 대상 항목의 키를 알 수없는 경우

+2

질문은'str_replace ('layer', 'key', $ stackquestion);' –

답변

2

다음은 형제에 그것의 위치를 ​​(그것이 첫 번째 항목인가? 마지막? 세 번째?) 알고이 .

즉 쉽게 reset($merchant_pic)입니다 얻을 수있는 유일한 (또는 첫번째) $merchant_pic 다음 방법 중 하나 내부 항목, 그래서 당신이 쓰는 것입니다 경우

echo reset($merchant_pic)['campaign']; // requires PHP >= 5.4 
+0

에 답해야합니다. 그러나 컴퓨터로 본질적으로 정의되지 않은 것을 처리하는 것이 정상적인 지 궁금합니다. – Tibo

+0

@Tibo : 그건 그렇게되지 않습니다. 색인이 사용자에게 아무런 의미가없는 배열을 얻는 것이 일반적이며 일부 기능 (예 : id로 색인화 된 사용자 객체 목록)은 신경 쓰지 않습니다. 목록의 첫 번째 사용자에게만 관심이 있다고 상상해보십시오. 당신은 열쇠 (id)를 모른다. 그러나 당신은 또한 상관하지 않는다. – Jon

+0

둘 이상의 '첫 번째 레이어'에 '캠페인'이라는 키가있는 경우 하드 코드하지 않으면 작동하지 않을 것이라고 생각합니다. –

0

당신은 키를 통해 루프까지 찾을 수있는 하나의

<?php 
$merchant_pic['not_shop'] = array(
    'rrr' => 'aaa', 
    2 => 'a', 
    'foo' => 'bar' 
); 
$merchant_pic['shop'] = array(
    'bla' => 1, 
    'asd' => 2, 
    'campaign' => 'true (hit here)', 
    'qwe' => 3 
); 

foreach ($merchant_pic as $key => $value) { 
    if(isset($merchant_pic[$key]['campaign'])) { 
     echo $merchant_pic[$key]['campaign']; 
    } 

} 

출력 : 나는 $ 키가 무엇인지 모르는이 경우 true (hit here)

. 그것은 shop이지만 not_shop 일 수 있습니다. 두 키 또는 다른 키에있을 수도 있습니다. 모든 키를 반복하고 isset()으로 true를 반환 할 때마다 인쇄합니다.

관련 문제