Heim  >  Artikel  >  Backend-Entwicklung  >  So verwenden Sie die Funktion array_udiff, um einen Array-Unterschied in PHP durchzuführen (Sie können die Vergleichsfunktion anpassen)

So verwenden Sie die Funktion array_udiff, um einen Array-Unterschied in PHP durchzuführen (Sie können die Vergleichsfunktion anpassen)

WBOY
WBOYOriginal
2023-06-26 13:32:26813Durchsuche

Array ist in PHP ein sehr häufig verwendeter Datentyp und auch für den Betrieb und die Verarbeitung von Arrays sehr wichtig. Bei der Verarbeitung von Arrays ist es häufig erforderlich, Vorgänge wie den Vergleich und die Ermittlung von Unterschieden zwischen mehreren Arrays durchzuführen.

PHP bietet viele Funktionen für Arrays, darunter die Funktion array_udiff(), die Array-Differenzen berücksichtigt. Sie kann mehrere Arrays vergleichen und ein Differenz-Array zurückgeben. In diesem Artikel wird detailliert beschrieben, wie Sie die Funktion array_udiff() verwenden und wie Sie die Vergleichsfunktion anpassen, um Array-Differenzen durchzuführen.

1. Grundlegende Verwendung der Funktion array_udiff()

Die grundlegende Syntax der Funktion array_udiff() lautet wie folgt:

array array_udiff ( array $array1 , array $array2 [, array $... ], callable $value_compare_func )

Unter diesen sind $array1, $array2 und die nachfolgenden $...-Parameter mehrere zu vergleichende Arrays, $ value_compare_func ist eine benutzerdefinierte Vergleichsfunktion.

Der Rückgabewert dieser Funktion ist ein Array, das die Werte im Array $array1 angibt, die sich von anderen Arrays unterscheiden.

Das Folgende ist ein einfaches Beispiel, das zeigt, wie die Funktion array_udiff() verwendet wird:

<?php
function compare($a, $b){
    if($a === $b){ //值相等
        return 0;
    }
    return ($a > $b) ? 1 : -1;
}

$array1 = array(1, 2, 3, 4, 5);
$array2 = array(5, 6, 7, 8, 9);

$result = array_udiff($array1, $array2, 'compare');
print_r($result);
?>

Der obige Code gibt ein Array $result aus, das 1, 2, 3, 4 enthält. Diese Werte existieren in $array1, aber in Existiert nicht in $array2. Dieses Ergebnis ist dasselbe, wie wir es uns vorgestellt haben, da die Arrays $array1 und $array2 nur den gleichen Wert von 5 haben, sodass die Differenzmenge alle Elemente in $array1 außer 5 umfassen sollte.

2. Implementierung einer benutzerdefinierten Vergleichsfunktion

Bei Verwendung der Funktion array_udiff() müssen Sie eine Vergleichsfunktion anpassen, die verwendet wird, um zu vergleichen, ob zwei Elemente gleich sind.

Die Definition der Vergleichsfunktion muss die folgenden Bedingungen erfüllen:

  1. Der Rückgabewert der Funktion muss ein ganzzahliger Wert sein;
  2. Der ganzzahlige Wert stellt die Größenbeziehung zwischen den beiden Elementen dar, insbesondere:

    • If $ a ist größer als $ b, dann sollte die Funktion eine positive ganze Zahl (eine Zahl größer als 0) zurückgeben, z. B. 1;
    • Wenn $a kleiner als $b ist, sollte die Funktion eine negative ganze Zahl (eine Zahl kleiner) zurückgeben als 0), wie zum Beispiel -1;
    • Wenn $ a gleich $b ist, sollte die Funktion 0 zurückgeben.

Die Vergleichsfunktion kann entsprechend der tatsächlichen Situation geschrieben werden. Sie können beispielsweise die folgende Funktion verwenden, um die Länge zweier Zeichenfolgen zu vergleichen:

function compare_length($a, $b){
    $len_a = strlen($a);
    $len_b = strlen($b);
    if($len_a === $len_b){ //值相等
        return 0;
    }
    return ($len_a > $len_b) ? 1 : -1;
}

In der obigen Funktion „compare_length()“ verwenden wir strlen(. )-Funktion, um die Länge von $a und $b zu erhalten, vergleicht dann die beiden Längen und gibt den entsprechenden Wert zurück.

Natürlich bezieht sich die Vergleichsfunktion nicht unbedingt nur auf den Wert des Elements. Sie kann auch basierend auf anderen Attributen verglichen werden, z. B. einem bestimmten Attribut des im Array enthaltenen Objekts usw. Dies sollte entsprechend geschrieben werden auf die tatsächliche Situation.

Nachdem wir die Vergleichsfunktion angepasst haben, können wir die Funktion array_udiff() verwenden, um eine Array-Differenz durchzuführen. Wir haben zum Beispiel die folgenden zwei Arrays:

$array1 = array('hello', 'world', 'foo', 'bar');
$array2 = array('world', 'bar', 'php');

Wir möchten die Elemente in $array1 finden, die sich von $array2 unterscheiden. Sie können den folgenden Code verwenden:

function compare_in_array($a, $b){
    if(in_array($a, $b)){ //值在另一个数组中存在
        return 0;
    }
    return ($a > $b) ? 1 : -1;
}

$result = array_udiff($array1, $array2, 'compare_in_array');
print_r($result);

Da es in der Vergleichsfunktion Compare_in_array() der Fall ist Beurteilt, ob $a im Array $b vorhanden ist. Daher werden Elemente mit demselben Wert wie $array2 von der Array-Differenz ausgeschlossen.

3. Fazit

Die Funktion array_udiff() kann problemlos mehrere Arrays vergleichen und unterscheiden. Durch Anpassen der Vergleichsfunktion können wir die Vergleichsmethode von Elementen basierend auf unseren eigenen Anforderungen definieren und Arrays flexibler verarbeiten.

Es ist zu beachten, dass beim Anpassen einer Vergleichsfunktion die Anforderung erfüllt sein muss, dass ihr Rückgabewert eine Ganzzahl ist, und dass die tatsächliche Vergleichslogik nach Bedarf geschrieben werden muss.

Das obige ist der detaillierte Inhalt vonSo verwenden Sie die Funktion array_udiff, um einen Array-Unterschied in PHP durchzuführen (Sie können die Vergleichsfunktion anpassen). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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