Je souhaite modifier une valeur dans un tableau multidimensionnel si la clé correspondante se trouve dans un autre tableau associatif plat.
J'ai ces deux tableaux :
$full = [ 'Cars' => [ 'Volvo' => 0, 'Mercedes' => 0, 'BMW' => 0, 'Audi' => 0 ], 'Motorcycle' => [ 'Ducati' => 0, 'Honda' => 0, 'Suzuki' => 0, 'KTM' => 0 ] ]; $semi = [ 'Volvo' => 1, 'Audi' => 1 ];
Je veux que le tableau ressemble à ceci :
Array ( [Cars] => Array ( [Volvo] => 1 [Mercedes] => 0 [BMW] => 0 [Audi] => 1 ) [Motorcycle] => Array ( [Ducati] => 0 [Honda] => 0 [Suzuki] => 0 [KTM] => 0 ) )
Je récupère le tableau $semi du champ de saisie et je souhaite le fusionner dans $full pour l'enregistrer dans ma base de données.
J'ai essayé array_replace()
comme :
$replaced = array_replace($full, $semi);
Il vous suffit d'accéder aux "leafnodes" et il est très simple de parcourir et de modifier l'ensemble du tableau en utilisant
array_walk_recursive()
.La syntaxe moderne de la "fonction fléchée" permet d'accéder aux demi-tableaux sans écrire
use()
.Cette méthode n'effectuera jamais d'appels de fonction itératifs. Il incrémente conditionnellement la valeur trouvée dans le demi-tableau par référence (
&$v
) 修改$v
,使用“加法赋值”组合运算符 (+=
) 以及空合并operator (??
) dans le tableau complet.Code : (Démo)
Ne pas utiliser
array_walk_recursive()
nécessitera l'utilisation de boucles imbriquées pour ajouter des fabricants qualifiés.Code : (Démo)
Vous devez parcourir
$semi
数组并检查它是否存在于$full
l'un des tableaux et y ajouter :