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

) 

¿Cómo puedo obtener la clave de todo el valor con el formato "0, nombre, identificación, teléfono, Base, ciudad, Ebase, Cantidad"?Cómo obtener toda la clave en la matriz multidimensional en php

Gracias!

+3

comenzando con un bucle foreach() sería una idea. –

+0

Va a tener que hacer una búsqueda en anchura o una primera búsqueda en profundidad para encontrar todas las claves de la matriz. Para hacer eso fácilmente necesitarás usar una función recursiva. – Cheesebaron

+0

Por esa matriz exacta '$ teclas = array_merge (array_keys ($ array), array_keys (corriente ($ array)));' probablemente hacerlo. Pero lo que podíamos hacer con saber exactamente lo que está intentando lograr al hacer esto con el fin de proporcionar asesoramiento sobre la mejor ** ** manera de hacerlo ... – DaveRandom

Respuesta

11

probar este

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

Funciona muy bien! ¡Gracias! – aje

+0

Esto no es correcto para matrices multidimensionales. –

4

Si usted no sabe lo que el tamaño de la matriz va a ser, utilizar una función recursiva con un bucle foreach que se llama si cada $ val es una matriz. Si conoces el tamaño, solo ve por cada dimensión y registra las claves de cada una.

Algo como esto:

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

} 
Cuestiones relacionadas