2012-06-27 5 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、名前、ID、電話、ベース、都市、Ebase、数量」形式で、すべてのキーの値を取得できますか?はどのようにPHPの多次元配列のすべてのキーを取得する

ありがとうございました!

+3

を試してみてください。 –

+0

配列内のすべてのキーを検索するには、幅優先検索または深さ優先探索が必要です。簡単に行うには、再帰関数を使用する必要があります。 – Cheesebaron

+0

その正確な配列 '$ keys = array_merge(array_keys($ array)、array_keys(current($ array)));'はおそらくそれを行います。しかし、私たちはあなたがこれを行うことによって達成しようとしていることを正確に知ることで、**最良の方法でアドバイスを提供することができます。 – DaveRandom

答えて

11

は考えですのforeach()ループで始まるこの

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

配列のサイズがわからない場合は、各$ valが配列の場合は、自身を呼び出すforeachループを持つ再帰関数を使用してください。あなたがサイズを知っているならば、それぞれの次元をforeachし、それぞれからキーを記録してください。このような

何か:

<?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; 

} 
関連する問題