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

) 

Jak mogę uzyskać wszystkie wartości klucza z formatem „0, nazwa, id, telefon, Base, miasto, Ebase, Ilosc”?Jak uzyskać wszystkie klucza w tablicy wielowymiarowej w php

Dziękujemy!

+3

począwszy foreach() pętli byłoby pomysłem. –

+0

Będziesz musiał albo wykonać pierwsze wyszukiwanie szerokości, albo głębokie pierwsze wyszukiwanie, aby znaleźć wszystkie klucze w tablicy. Aby to zrobić, będziesz musiał użyć funkcji rekursywnej. – Cheesebaron

+0

Dla tej dokładnej tablicy '$ keys = array_merge (array_keys ($ array), array_keys (current ($ array)));' prawdopodobnie to zrobi. Ale możemy zrobić z wiedząc dokładnie, co próbujesz osiągnąć, robiąc to, aby udzielić porady na ** najlepszy ** sposób, aby to zrobić ... – DaveRandom

Odpowiedz

11

Spróbuj

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

Działa świetnie! Dziękuję Ci! – aje

+0

To nie jest poprawne w przypadku tablic wielowymiarowych. –

4

Jeśli nie wiesz, jaki będzie rozmiar tablicy, użyj funkcji rekursywnej z pętlą foreach, która wywołuje samą siebie, jeśli każdy $ val jest tablicą. Jeśli znasz rozmiar, to po prostu przejdź przez każdy wymiar i zapisz klucze z każdego z nich.

coś takiego:

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

}