J'essaie de réaliser quelque chose que je croyais naïvement simple: aplatir un tableau multidimensionnel (qui pourrait avoir plusieurs niveaux imbriqués) tout en conservant des tableaux. Idéalement, je cherche une fonction qui peut parcourir 10+ niveaux imbriqués et gérer différents ensembles de clés (pas forcément toujours les mêmes).Transformez un tableau PHP multidimensionnel en un tableau bidimensionnel
En bref, tourner ceci:
Array
(
[0] => Array
(
[0] => Array
(
[index] => -1
[qty] => 77
[id] => 7
)
[1] => Array
(
[index] => -1
[qty] => 83
[id] => 8
)
)
[1] => Array
(
[0] => Array
(
[index] => -1
[qty] => 75
[id] => 13
)
[1] => Array
(
[index] => -1
[qty] => 60
[id] => 14
[msr] => g
)
)
[2] => Array
(
[index] => -1
[qty] => 10
[id] => 12
)
)
Dans ceci:
Array
(
[0] => Array
(
[index] => -1
[qty] => 77
[id] => 7
)
[1] => Array
(
[index] => -1
[qty] => 83
[id] => 8
)
[2] => Array
(
[index] => -1
[qty] => 75
[id] => 13
)
[3] => Array
(
[index] => -1
[qty] => 60
[id] => 14
[msr] => g
)
[4] => Array
(
[index] => -1
[qty] => 10
[id] => 12
)
)
C'est ce que j'avais et de la pensée travaillerais, mais je me retrouve avec un tableau plat avec aucune information clé (et si je veux des clés, chaque itération écrase les valeurs précédentes et je me retrouve avec juste le dernier tableau de toutes):
function flatten_multi_array(array $array){
$ret_array = array();
foreach(new RecursiveIteratorIterator(new RecursiveArrayIterator($array)) as $value) {
$ret_array[] = $value;
}
return $ret_array;
}
Merci pour la réponse. Mais cela n'a pas vraiment marché. Je reçois un tableau aplati et perd toutes les informations clés ... –
bien sûr, il ne fusionne pas les sous-systèmes, pas la maintenance de la clé. si vous avez besoin d'une clé, remplacez simplement $ out = $ v par $ out = array (..., "key" => $ k); d'après la description, il n'était pas clair si l'une ou l'autre des clés est unique ou devrait être maintenue. – jancha
J'avais déjà une fonction qui faisait la même chose (voir edit), et si je veux avoir des clés, puisqu'elle n'a pas de seconde dimension, toutes les valeurs seraient écrasées. –