Array-Filterung mit array_diff_assoc()
Array_diff_assoc() ist in PHP eine nützliche Funktion zum Vergleichen von Arrays und zum Identifizieren von Unterschieden. Benutzer können jedoch auf ein Problem stoßen, bei dem die resultierende Ausgabe gemeinsame Elemente anstelle der erwarteten eindeutigen Elemente enthält.
Um dies zu verstehen, untersuchen wir das Verhalten von array_diff_assoc() genauer. Diese Funktion führt einen strikten Gleichheitsvergleich zwischen Schlüssel-Wert-Paaren durch. Dies bedeutet, dass die Zeichenfolgendarstellung von Elementen zum Vergleich identisch sein muss.
Betrachten Sie das folgende Beispiel:
<code class="php">$array1 = [ [12 => 'new q sets'], [11 => 'common set'] ]; $array2 = [ [11 => 'common set'] ];</code>
Wenn array_diff_assoc() auf diese Arrays angewendet wird, wird Folgendes verglichen:
Array ([0] => "Array" [1] => "Array") Array ([0] => "Array")
Da die Schlüssel-Wert-Paare nicht identisch sind, gibt der Vergleich das [1]-Element aus dem ersten Array zurück ([1] => Array( [11] => common set )). Dies ist nicht das gewünschte Ergebnis, da es das gemeinsame Element enthält.
Um dieses Problem zu beheben, sollten Benutzer sicherstellen, dass die Zeichenfolgendarstellungen von Schlüssel-Wert-Paaren in beiden Arrays identisch sind. Dies kann durch die Verwendung konsistenter Formatierungen oder Datentypen erreicht werden. Darüber hinaus kann das Umwandeln von Werten in Zeichenfolgen (z. B. (string) $element) dazu beitragen, einen strengen Gleichheitsvergleich sicherzustellen.
Das obige ist der detaillierte Inhalt vonWarum gibt array_diff_assoc() gemeinsame Elemente statt eindeutiger Elemente zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!