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>
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!