Warum schließt „array_diff_assoc()' beim Vergleich von 2D-Arrays gemeinsame Zeilen ein?

Barbara Streisand
Freigeben: 2024-10-26 06:06:02
Original
882 Leute haben es durchsucht

Why Does `array_diff_assoc()` Include Common Rows When Comparing 2D Arrays?

2D-Array-Zeilen mithilfe eines anderen Arrays filtern

Sie haben zwei 2D-Arrays und möchten array_diff_assoc() verwenden, um die eindeutigen Zeilen darin zu identifizieren im ersten Array, die im zweiten nicht vorhanden sind. Es tritt jedoch ein Problem auf, bei dem die gemeinsamen Zeilen im Ergebnis enthalten sind.

Das Problem ergibt sich aus der Art und Weise, wie array_diff_assoc() Werte vergleicht. Es führt einen strikten Zeichenfolgenvergleich durch, was bedeutet, dass Werte sowohl im Typ als auch im Wert identisch sein müssen, um als gleich zu gelten. Im gegebenen Beispiel:

<code class="php">$array1 = [
    [12 => 'new q sets'],
    [11 => 'common set']
];

$array2 = [
    [11 => 'common set']
];</code>
Nach dem Login kopieren

Wenn array_diff_assoc($array1, $array2) aufgerufen wird, lautet die Zeichenfolgendarstellung beider Arrays „Array“. Somit wird der Unterschied anhand der zusätzlichen Zeile in $array1 ([12] => 'new q sets') erkannt. Daher ist die gemeinsame Zeile ([11] => 'common set') in der Differenz enthalten.

Um dieses Problem zu beheben, sollten Sie einen anderen Vergleichsansatz in Betracht ziehen. Wenn die Daten in den Arrays numerisch sind oder in numerische Werte konvertiert werden können, können Sie array_diff_uassoc() verwenden, mit dem Sie eine benutzerdefinierte Vergleichsfunktion angeben können. Alternativ können Sie die Zeilen manuell filtern, indem Sie beide Arrays durchlaufen und auf Wertegleichheit prüfen.

Das obige ist der detaillierte Inhalt vonWarum schließt „array_diff_assoc()' beim Vergleich von 2D-Arrays gemeinsame Zeilen ein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage