2010-01-27 11 views
8

ho questa matrice qui:come scartare un array in 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 
    ) 

) 

voglio scartare la prima profondità della matrice per ottenere questo:

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

che cosa ha fatto si prova? – SilentGhost

+0

niente, conosco alcuni modi per farlo, ma sono tutti brutti :) – antpaw

risposta

15

con PHP 5.3.0+:

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

Bella one-liner, ma devo ancora seguire l'approccio di Gordon, mi sembra più semplice. –

+2

Mi piace questo meglio del mio, perché funziona per una quantità arbitraria di array sul primo livello – Gordon

+0

Buon punto. +1. –

3

Prova

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 È intelligente! –

5

Credo che il modo più semplice è quello di utilizzare un ciclo foreach:

$resultArray = array(); 

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

@Pekka - sì, non ne ho ancora oggi. – karim79

+0

@ karim79, ciò accade a volte. Ma @Gordon ci ha battuti entrambi, la sua soluzione è sicuramente la migliore. –

1

Questo è anche un bellissimo uno di linea

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

anche questo non funziona per me, non cambia l'array di input in alcun modo. – antpaw

+0

Dovresti avvolgerlo in un RecursiveIteratorIterator per essere in grado di scorrere gli elementi di primo livello. Inoltre, $ array non sarà una matrice ma, come suggerisce la classe, un iteratore, che avvolge una matrice. – Gordon