J'ai deux tableaux multidimensionnels:Fusionner des tableaux multidimensionnels avec id commun
Premier tableau Pizzas:
0 => array:2 [▼
"pizza_id" => 11
"pizza_name" => "Hawaï"
]
1 => array:2 [▼
"pizza_id" => 12
"pizza_name" => "Tonno"
]
2 => array:2 [▼
"pizza_id" => 13
"pizza_name" => "Surprise"
]
Deuxième tableau Ingrédients:
0 => array:4 [▼
"pizza_id" => 11
"ingredient_one" => "Ananas"
"ingredient_two" => "Onion"
"ingredient_three" => "Ham"
]
1 => array:4 [▼
"pizza_id" => 12
"ingredient_one" => "Tuna"
"ingredient_two" => "Onion"
"ingredient_three" => null
]
Je veux fusionner ces deux réseaux les reliant par pizza_id
. L'un des Pizza Ids n'a pas tableau de correspondance des ingrédients (les ingrédients sont inconnus) donc pour cette pizza que je veux mettre les ingrédients pour null
et obtenir le prochain tableau:
New PizzaAndIngredients de tableau:
0 => array:5 [▼
"pizza_cid" => 11
"pizza_name" => "Hawaï"
"ingredient_one" => "Ananas"
"ingredient_two" => "Onion"
"ingredient_three" => "Ham"
]
1 => array:5 [▼
"pizza_id" => 12
"pizza_name" => "Tonno"
"ingredient_one" => "Tuna"
"ingredient_two" => "Onion"
"ingredient_three" => null
]
2 => array:5 [▼
"pizza_id" => 13
"pizza_name" => "Surprise"
"ingredient_one" => null
"ingredient_two" => null
"ingredient_three" => null
]
I ont été bidouiller avec array_merge
, foreach
, etc, mais ne peut pas obtenir le tableau. L'alternative est de construire une nouvelle requête et de joindre des pizzas et des ingrédients de gauche, mais dans la vraie vie, les tableaux sont beaucoup plus compliqués et cela signifierait dupliquer beaucoup de code. J'espérais une solution plus efficace pour fusionner les deux réseaux multi-dimensionnels.
Ma dernière tentative:
$PizzaAndIngredients = array();
foreach ($pizzas as $key => $values) {
$PizzaAndIngredients[$key] = array_merge($ingredients, $values);
}
Cela ressemble à une façon intéressante d'aller. Existe-t-il un moyen plus efficace de créer le tableau par défaut (null)? Depuis le tableau des ingrédients dans la réalité a plus de 30 valeurs. Puis-je copier un tableau d'ingrédients existant et mettre toutes les valeurs à zéro? – zef
Oui. Edited un défaut dynamique. – AbraCadaver
Testé et travaillé! Impressionnant! Merci beaucoup. Btw. J'ai trouvé un moyen un peu plus efficace de définir l'arrya null par défaut: $ keys = array_keys (reset ($ ingredients)); $ default = array_fill_keys ($ keys, null); – zef