Se you'r okay con la perdita dei tasti dell'array, puoi appiattire un array multidimensionale usando una chiusura ricorsiva come callback che utilizza array_values (), assicurandoti che questo callback sia un parametro per array_walk(), come segue.
<?php
$array = [1,2,3,[5,6,7]];
$nu_array = null;
$callback = function ($item) use(&$callback, &$nu_array) {
if (!is_array($item)) {
$nu_array[] = $item;
}
else
if (is_array($item)) {
foreach(array_values($item) as $v) {
if (!(is_array($v))) {
$nu_array[] = $v;
}
else
{
$callback($v);
continue;
}
}
}
};
array_walk($array, $callback);
print_r($nu_array);
L'unico inconveniente dell'esempio precedente è che coinvolge la scrittura molto più codice rispetto la seguente soluzione che utilizza array_walk_recursive() insieme con un callback semplificata:
<?php
$array = [1,2,3,[5,6,7]];
$nu_array = [];
array_walk_recursive($array, function ($item) use(&$nu_array)
{
$nu_array[] = $item;
}
);
print_r($nu_array);
Vedi live code
Questo esempio sembra preferibile a quello precedente, nascondendo i dettagli su come vengono estratti i valori da una matrice multidimensionale. Sicuramente, l'iterazione si verifica, ma indipendentemente dal fatto che comporti ricorsione o struttura (i) di controllo, lo saprai solo dalla scansione di array.c. Poiché la programmazione funzionale si concentra sull'input e sull'output piuttosto che sulle minuzie per ottenere un risultato, sicuramente non si può preoccuparsi di come avviene l'iterazione dietro le quinte, cioè finché un datore di lavoro prospettico pone una domanda del genere.
** Si prega di controllare questo link per soluzione **: http://stackoverflow.com/questions/14951811/i-want- to-add-sub-array-to-one-single-array-in-php/14952110 # 14952110 –
** Un'altra buona domanda di riferimento ** con risposte forse migliori: [Come appiattire una matrice multidimensionale?] (http://stackoverflow.com/q/1319903/367456) – hakre