Heim  >  Artikel  >  Backend-Entwicklung  >  So erhalten Sie verschiedene Teile zweier assoziativer Arrays in PHP

So erhalten Sie verschiedene Teile zweier assoziativer Arrays in PHP

PHPz
PHPzOriginal
2023-03-23 14:48:061314Durchsuche

Bei der PHP-Entwicklung müssen wir häufig zwei assoziative Arrays vergleichen und ihre unterschiedlichen Teile ermitteln. Im Folgenden stellen wir verschiedene Möglichkeiten vor, um diese Funktionalität zu erreichen.

Methode 1: Verwenden Sie die Funktion array_diff_assoc().

Die Funktion array_diff_assoc() kann verwendet werden, um Schlüssel-Wert-Paare zweier assoziativer Arrays zu vergleichen und alle Elemente im ersten Array, jedoch nicht in anderen Arrays, zurückzugeben und den Schlüsselnamen beizubehalten und Schlüsselwert.

Codebeispiel:

$array1 = array("name"=>"张三", "age"=>22, "salary"=>3000);  
$array2 = array("name"=>"李四", "age"=>22, "salary"=>4000);  
$result = array_diff_assoc($array1, $array2);  
print_r($result);

Das Ausgabeergebnis ist:

Array
(
    [name] => 张三
    [salary] => 3000
)

Wie Sie sehen können, enthält das Ergebnisarray nur die Schlüssel-Wert-Paare mit den Schlüsselnamen „name“ und „salary“ in Array 1, da dies nicht der Fall ist erscheinen in Array 2 .

Methode 2: Verwenden Sie eine benutzerdefinierte Funktion

Eine andere Implementierungsmethode besteht darin, eine Funktion anzupassen, um dem Ergebnisarray verschiedene Teile hinzuzufügen, indem Sie zwei Arrays durchlaufen und ihre Schlüssel-Wert-Paare vergleichen.

Codebeispiel:

function array_diff_custom($array1, $array2) {  
    $result = array();  
    foreach ($array1 as $key => $value) {  
        if (!array_key_exists($key, $array2) || ($array2[$key] != $value)) {  
            $result[$key] = $value;  
        }  
    }  
    return $result;  
}  
$array1 = array("name"=>"张三", "age"=>22, "salary"=>3000);  
$array2 = array("name"=>"李四", "age"=>22, "salary"=>4000);  
$result = array_diff_custom($array1, $array2);  
print_r($result);

Das Ausgabeergebnis ist:

Array
(
    [name] => 张三
    [salary] => 3000
)

Ebenso enthält das Ergebnisarray nur die Schlüssel-Wert-Paare mit den Schlüsselnamen „Name“ und „Gehalt“ in Array 1.

Methode 3: Verwenden Sie die Funktion array_udiff_assoc()

Die Funktion array_udiff_assoc() ähnelt der Funktion array_diff_assoc(), kann jedoch eine benutzerdefinierte Rückruffunktion verwenden, um Schlüssel-Wert-Paare zu vergleichen.

Codebeispiel:

function compareByKeyValue($a, $b) {  
    if ($a === $b) {  
        return 0;  
    }  
    return ($a > $b) ? 1 : -1;  
}  
$array1 = array("name"=>"张三", "age"=>22, "salary"=>3000);  
$array2 = array("name"=>"李四", "age"=>22, "salary"=>4000);  
$result = array_udiff_assoc($array1, $array2, "compareByKeyValue");  
print_r($result);

Das Ausgabeergebnis ist:

Array
(
    [name] => 张三
    [salary] => 3000
)

Wir definieren eine Rückruffunktion „compareByKeyValue()“, um zu vergleichen, ob Schlüssel-Wert-Paare gleich sind. Indem wir den Namen dieser Funktion als drittes Argument an die Funktion array_udiff_assoc() übergeben, können wir einen ähnlichen Effekt wie bei der Funktion array_diff_assoc() erzielen.

Zusammenfassung

In diesem Artikel werden drei Möglichkeiten vorgestellt, die verschiedenen Teile zweier assoziativer Arrays in PHP zu erhalten: die Verwendung der Funktion array_diff_assoc(), einer benutzerdefinierten Funktion und der Funktion array_udiff_assoc(). Welche Methode Sie wählen, hängt von den spezifischen Bedürfnissen und persönlichen Gewohnheiten ab. In beiden Fällen können Sie die Effizienz und Genauigkeit beim Arbeiten mit assoziativen Arrays verbessern.

Das obige ist der detaillierte Inhalt vonSo erhalten Sie verschiedene Teile zweier assoziativer Arrays in PHP. 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