2012-06-27 16 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 
     ) 

) 

Ben "0, isim, kimlik, telefon, Taban, şehir, Ebase, Adet" formatı ile tüm anahtar değeri alabilirim?nasıl php çok boyutlu dizideki tüm anahtarını almak için

Teşekkür ederiz!

+3

deneyin. –

+0

Dizideki tüm anahtarları bulmak için önce bir İlk İlk Arama veya İlk Derinliği Arama yapmanız gerekir. Bunu kolayca yapabilmek için özyinelemeli bir işlev kullanmanız gerekecektir. – Cheesebaron

+0

Bu tam dizi için '$ keys = array_merge (array_keys ($ dizi), array_keys (geçerli ($ dizi))); 'muhtemelen yapardı. Ancak, bunu yapmak için en iyi ** yolla tavsiyede bulunmak için bunu yaparak ne yaptığınızı tam olarak bilmekle yapabilirdik ... – DaveRandom

cevap

11

bir fikir olacağını bir foreach() döngü ile başlayan bu

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

Harika çalışıyor! Teşekkür ederim! – aje

+0

Çok boyutlu diziler için bu doğru değil. –

4

Dizinin boyutunun ne olacağını bilmiyorsanız, her $ val bir dizi ise kendisini çağıran bir foreach döngüsüyle özyinelemeli bir işlev kullanın. Boyutu biliyorsanız, her bir boyuttan sadece foreach ve her birinden anahtarları kaydedin. Böyle

şey:

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

}