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

) 

Come posso ottenere tutto il valore della chiave con il formato "0, il nome, l'ID, telefono, Base, città, Ebase, Qty"?Come ottenere tutto la chiave in array multi-dimensionale in php

Grazie!

+3

iniziando con un ciclo foreach() sarebbe un'idea. –

+0

È necessario eseguire una ricerca di larghezza prima o profondità prima di cercare tutte le chiavi nell'array. Per farlo facilmente dovrai usare una funzione ricorsiva. – Cheesebaron

+0

Per l'array esatto '$ keys = array_merge (array_keys ($ array), array_keys (current ($ array))); probabilmente lo farà. Ma potremmo fare a sapere esattamente cosa stai cercando di fare facendo questo per fornire consigli sul modo migliore ** per farlo ... – DaveRandom

risposta

11

Prova questa

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

Funziona alla grande! Grazie! – aje

+0

Questo non è corretto per gli array multidimensionali. –

4

Se non si conosce quale sarà la dimensione dell'array, utilizzare una funzione ricorsiva con un ciclo foreach che si chiama se ogni $ val è un array. Se conosci la dimensione, apri solo le dimensioni e registra le chiavi da ciascuna.

Qualcosa di simile a questo:

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

} 
Problemi correlati