Comparaison des tableaux associatifs imbriqués pour les différences
Dans le contexte de la programmation, lorsqu'il s'agit de tableaux associatifs multidimensionnels, il devient souvent nécessaire de comparer leur contenu et identifier les différences. Considérons le scénario où vous avez deux tableaux :
$pageids = [ ['id' => 1, 'linklabel' => 'Home', 'url' => 'home'], ['id' => 2, 'linklabel' => 'Graphic Design', 'url' => 'graphicdesign'], ['id' => 3, 'linklabel' => 'Other Design', 'url' => 'otherdesign'], ['id' => 6, 'linklabel' => 'Logo Design', 'url' => 'logodesign'], ['id' => 15, 'linklabel' => 'Content Writing', 'url' => 'contentwriting'], ]; $parentpage = [ ['id' => 2, 'linklabel' => 'Graphic Design', 'url' => 'graphicdesign'], ['id' => 3, 'linklabel' => 'Other Design', 'url' => 'otherdesign'], ];
L'objectif est de trouver les lignes dans $pageids qui ne sont pas présentes dans $parentpage. L'utilisation de array_diff_assoc() seule peut ne pas donner le résultat souhaité si les tableaux contiennent des tableaux associatifs imbriqués. Pour résoudre ce problème, nous pouvons exploiter array_map() et unserialize().
$pageWithNoChildren = array_map('unserialize', array_diff(array_map('serialize', $pageids), array_map('serialize', $parentpage)));
Tout d'abord, array_map() parcourt les sous-tableaux dans $pageids et $parentpage et sérialise chaque sous-tableau dans une représentation sous forme de chaîne utilisant Serialize(). Cela convertit efficacement les tableaux multidimensionnels en tableaux unidimensionnels avec des chaînes comme éléments.
Ensuite, array_diff() compare les représentations sous forme de chaîne des sous-tableaux et renvoie un tableau contenant uniquement les différences. Le tableau résultant est ensuite renvoyé à array_map(), qui parcourt chaque chaîne et la désérialise dans sa représentation de sous-tableau d'origine à l'aide d'unserialize().
En conséquence, $pageWithNoChildren contiendra un tableau de sous-tableaux qui représentent les lignes de $pageids qui ne sont pas présentes dans $parentpage. Cette approche compare efficacement le contenu des tableaux associatifs imbriqués et fournit les différences souhaitées.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!