<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Cette partie n'a rien à voir avec le contenu de l'article,Peut contenir n'importe quel PHP Commentaires ou définitions variables simples</span></span><span>
</span><span><span class="hljs-variable">$dummy</span></span><span> = </span><span><span class="hljs-string">"C'est du code pré-indépendant"</span></span><span>;
</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">placeholderFunction</span></span><span>(</span><span><span class="hljs-params"></span></span><span>) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-string">"Sortie de la fonction d'espace réservé"</span></span><span>;
}
</span><span><span class="hljs-meta">?></span></span><span>
<hr>
</span><span><span class="hljs-meta"><?php</span></span><span>
<span class="hljs-comment">/**
* PHP Comment combiner array_udiff_assoc et array_map Pour obtenir une comparaison précise des éléments du tableau?
*
* exister PHP milieu,Lorsque nous devons comparer les éléments de deux tableaux,Et espérons que le processus de comparaison peut prendre en compte les noms clés、Lorsque la valeur et la logique de comparaison personnalisée,
* array_udiff_assoc et array_map Ce sont deux outils très utiles。Cet article expliquera en détail comment les combiner pour obtenir une comparaison précise des éléments du tableau.。
*
* 1. array_udiff_assoc Introduction
* array_udiff_assoc() Utilisé pour comparer les différences entre deux tableaux,同时考虑键名et键值。Son prototype de fonction est le suivant:
*
* array_udiff_assoc(array $array1, array $array2, callable $value_compare_func): array
*
* ici $value_compare_func C'est une fonction de rappel,Logique de comparaison pour les valeurs personnalisées。
*
* 2. array_map Introduction
* array_map() 可以对数组milieu的每个élément应用回调函数,Générer un nouveau tableau。Le prototype est le suivant:
*
* array_map(callable $callback, array ...$arrays): array
*
* passer array_map,我们可以exister比较前对数组élément进行标准化处理(Par exemple, retirer les espaces、Cas unifié, etc.)。
*
* 3. Combinaison d'idées
* - utiliser array_map Traitement unifié de deux tableaux,Rendre les éléments cohérents。
* - 然后utiliser array_udiff_assoc Comparaison de deux tableaux,Utilisez des rappels personnalisés pour obtenir des jugements de divergence plus précis。
*
* Exemple de code:
*/</span>
</span><span><span class="hljs-comment">// Tableau d'origine</span></span><span>
</span><span><span class="hljs-variable">$array1</span></span><span> = [
</span><span><span class="hljs-string">'a'</span></span><span> => </span><span><span class="hljs-string">' Apple '</span></span><span>,
</span><span><span class="hljs-string">'b'</span></span><span> => </span><span><span class="hljs-string">'Banana'</span></span><span>,
</span><span><span class="hljs-string">'c'</span></span><span> => </span><span><span class="hljs-string">'Cherry'</span></span><span>
];
</span><span><span class="hljs-variable">$array2</span></span><span> = [
</span><span><span class="hljs-string">'a'</span></span><span> => </span><span><span class="hljs-string">'apple'</span></span><span>,
</span><span><span class="hljs-string">'b'</span></span><span> => </span><span><span class="hljs-string">'banana '</span></span><span>,
</span><span><span class="hljs-string">'d'</span></span><span> => </span><span><span class="hljs-string">'Date'</span></span><span>
];
</span><span><span class="hljs-comment">// Traitement unifié des éléments du tableau(Retirez les espaces avant et arrière et tournez en minuscules)</span></span><span>
</span><span><span class="hljs-variable">$normalizedArray1</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_map</span></span><span>(function(</span><span><span class="hljs-variable">$value</span></span><span>) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">strtolower</span></span><span>(</span><span><span class="hljs-title function_ invoke__">trim</span></span><span>(</span><span><span class="hljs-variable">$value</span></span><span>));
}, </span><span><span class="hljs-variable">$array1</span></span><span>);
</span><span><span class="hljs-variable">$normalizedArray2</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_map</span></span><span>(function(</span><span><span class="hljs-variable">$value</span></span><span>) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">strtolower</span></span><span>(</span><span><span class="hljs-title function_ invoke__">trim</span></span><span>(</span><span><span class="hljs-variable">$value</span></span><span>));
}, </span><span><span class="hljs-variable">$array2</span></span><span>);
</span><span><span class="hljs-comment">// Fonctions de comparaison personnalisées</span></span><span>
</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">compareValues</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$value1</span></span></span><span>, </span><span><span class="hljs-variable">$value2</span></span><span>) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">strcmp</span></span><span>(</span><span><span class="hljs-variable">$value1</span></span><span>, </span><span><span class="hljs-variable">$value2</span></span><span>);
}
</span><span><span class="hljs-comment">// utiliser array_udiff_assoc Obtenir $array1 milieu与 $array2 Différents éléments</span></span><span>
</span><span><span class="hljs-variable">$difference</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_udiff_assoc</span></span><span>(</span><span><span class="hljs-variable">$normalizedArray1</span></span><span>, </span><span><span class="hljs-variable">$normalizedArray2</span></span><span>, </span><span><span class="hljs-string">'compareValues'</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"L'élément de différence après une comparaison précise de deux tableaux:\n"</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$difference</span></span><span>);
<span class="hljs-comment">/**
* Résultat de sortie:
* Array
* (
* [c] => cherry
* )
*
* expliquer:
* - élément 'c' => 'Cherry' exister $array2 milieu不存exister,Par conséquent, il est identifié comme une différence。
* - élément 'a' et 'b' passer par trim et strtolower Après standardisation,Être considéré comme le même,因此不exister结果milieu。
*
* Résumer:
* passer结合 array_map et array_udiff_assoc,可以exister比较数组时做到既考虑键名,Considérez également la valeur,并且可以passer回调函数自定义比较规则,
* Convient aux exigences d'analyse différentielle de données complexes。
*/</span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Étiquettes associées:
array_map