2011-04-12 28 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 2011-04-12 13:51:08

回答

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 2011-04-12 14:04:30

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]; 
} 
相關問題