2011-04-12 5 views
1

는 :이름을 모른 채 배열 키를 참조할까요? 나는이 같은 배열이있는 경우

$array = array('something'=>array('more'=>array('id'=> 34))); 

그런 다음 잘 작동 print_r($array['something']['more']['id'].

하지만 키 이름은 변경 될 수 있지만 구조는 없습니다. 이름을 모른 채 어떻게 같은 값을 참조 할 수 있습니까?

어쩌면 print_r($array[0][1][2] 일할 수도 있지만 그 키가 존재하지 않는다고 생각했습니다.

+1

사용 foreach 문을 /php.net/manual/en/control-structures.foreach.php – kjy112

답변

3

foreach 문을 사용할 수 있습니다. 중첩 배열 (안된를) 처리하는 재귀 함수를 사용

public function iterateNestedArray($array) { 
    if (is_array($array)) { 
     foreach ($array as $key => $value) { 
      print_r(iterateNestedArray($value)); 
     } 
    } 
    else { 
     return $array; 
    } 
} 

당신은 오히려 단지 print_r 모든 값을 보내고보다는, 콜백 함수를 전달하는 두 번째 인수로이 기능을 구현하는 것이 좋습니다.

-1

당신은 reset(), next()end()는 항상

$array = array('something'=>array('more'=>array('id'=> 34))); 
echo reset(reset(reset($array))); 
+1

-1이 코드는 E_STRICT 오류를 발생시킵니다. 'reset'은 참조를 허용하므로'reset (reset())'은 유효하지 않습니다 (참조는 변수 여야하며 함수 호출과 같은 표현식은 받아 들여지지 않습니다). – netcoder

0

여러 가능성이있다 사용할 수 있습니다.

arrayiterator 또는 간단히 foreach을 사용할 수 있습니다. 아마도 array_values 일 수도 있습니다. 그것은 매우 추한 있지만

0

당신은 foreach는과 직선 루프를 수행 할 수 있습니다

foreach ($grandparent as $gpkey => $parent) { 
    foreach ($parent as $pkey => $child) { 
     foreach ($child as $ckey => $value) { 
      print $gpkey . " - " . $pkey . " - " . $ckey . " = " . $value; 
     } 
    } 
} 

아니면 array_keys()와 키의 목록을 얻을 수 있습니다 :/: 연관 arrray HTTP에 대한

$keys = array_keys($array); 
for ($i=0, $imax=count($keys); $i<$imax; $i++) { 
    print $key . " = " . $array[$key]; 
} 
관련 문제