2012-06-27 94 views
5
Array 
(
    [0] => Array 
     (
      [name] => A 
      [id] => 1 
      [phone] => 416-23-55 
      [Base] => Array 
       (
        [city] => toronto 
       ) 

      [EBase] => Array 
       (
        [city] => North York     
       ) 

      [Qty] => 1 
     ) 

(
    [1] => Array 
     (
      [name] => A 
      [id] => 1 
      [phone] => 416-53-66 
      [Base] => Array 
       (
        [city] => qing 
       ) 

      [EBase] => Array 
       (
        [city] => chong     
       ) 

      [Qty] => 2 
     ) 

) 

我怎樣才能獲得所有的格式以「0,姓名,身份證,手機,基地城市,EBASE,數量」的鍵值?如何獲得所有多維數組PHP中的關鍵

謝謝!

+3

用foreach()循環開始會是一個想法。 – 2012-06-27 21:13:22

+0

您將需要執行廣度優先搜索或深度優先搜索來查找陣列中的所有密鑰。爲了做到這一點,你需要使用遞歸函數。 – Cheesebaron

+0

對於這個確切的數組'$ keys = array_merge(array_keys($ array),array_keys(current($ array)));'可能會這樣做。但我們可以通過這樣做來確切知道你正在嘗試完成什麼,以便提供關於**最佳**方法的建議...... – DaveRandom

回答

11

試試這個

function array_keys_multi(array $array) 
{ 
    $keys = array(); 

    foreach ($array as $key => $value) { 
     $keys[] = $key; 

     if (is_array($value)) { 
      $keys = array_merge($keys, array_keys_multi($value)); 
     } 
    } 

    return $keys; 
} 
+0

它工作的很棒!謝謝! – aje

+0

這對於多維數組是不正確的。 –

4

如果你不知道數組的大小是什麼,那麼使用一個foreach循環的遞歸函數,如果每個$ val是一個數組,它就會自動調用它。如果你確實知道這個尺寸,那麼只需對每個尺寸進行預測並記錄下每個尺寸的密鑰。

事情是這樣的:

<?php 
function getKeysMultidimensional(array $array) 
{ 
    $keys = array(); 
    foreach($array as $key => $value) 
    { 
     $keys[] = $key; 
     if(is_array($value)) { 
      $keys = array_merge($keys, getKeysMultidimensional($value)); 
     } 
    } 

    return $keys; 

}