2010-01-27 15 views
8

tengo esta matriz aquí:cómo desenvolver una matriz en PHP

Array 
(
[0] => Array 
    (
     [presentation] => Präsentationen 
    ) 

[1] => Array 
    (
     [news] => Aktuelle Meldungen 
     [devplan] => Förderprogramme 
     [salesdoc] => Vertriebsunterlagen 
    ) 

[2] => Array 
    (
     [user/settings] => Mein Account 
    ) 

[3] => Array 
    (
    ) 

[4] => Array 
    (
     [orders] => Projekte 
    ) 

) 

quiero desenvolver la primera profundidad de la matriz para obtener esto:

Array 
(
    [presentation] => Präsentationen 
    [news] => Aktuelle Meldungen 
    [devplan] => Förderprogramme 
    [salesdoc] => Vertriebsunterlagen 
    [user/settings] => Mein Account 
    [orders] => Projekte 
) 
+0

lo hizo lo intentas? – SilentGhost

+0

nada, sé algunas maneras de hacer esto, pero todos son feos :) – antpaw

Respuesta

15

Con PHP 5.3.0+:

array_reduce($array, 'array_merge', array()); 
+0

Hermoso de una sola línea, pero todavía tengo que seguir el enfoque de Gordon, me parece más simple. –

+2

Me gusta más que el mío, porque funciona para una cantidad arbitraria de matrices en el primer nivel – Gordon

+0

Buen punto. +1. –

3

Trate

array_merge($array[0], $array[1], $array[2], $array[3], $array[4]); 

o

$new = $array[0] + $array[1] + $array[2] + $array[3] + $array[4]; 
+0

+1 ¡Eso es inteligente! –

5

supongo que la forma más sencilla es utilizar un bucle foreach:

$resultArray = array(); 

    foreach ($myArray as $array) 
    foreach ($array as $key => $element) 
    $resultArray[$key] = $element; 
+0

@Pekka - Sí, no estoy con eso hoy. – karim79

+0

@ karim79, eso sucede a veces. Pero @Gordon nos ganó a los dos, su solución es definitivamente la mejor. –

1

Este es también un bonito un trazador de líneas

$array = new RecursiveArrayIterator($yourArray); 
+0

esto tampoco funciona para mí, no cambia la matriz de entrada de ninguna manera. – antpaw

+0

Tendría que incluirlo también en un RecursiveIteratorIterator para poder iterar sobre los elementos de primer nivel. Además, $ array no será una matriz sino, como el nombre de clase sugiere, un iterador, envolviendo una matriz. – Gordon

Cuestiones relacionadas