PHP verschiedene Arrays vergleichen?
Hey,
ich habe ein Problem und zwar muss ich zwei Array vergleichen. Ein Beispiel Array von mir:
Array
(
[0] => 15
[1] => 85
[2] => 53
[3] => 12
[4] => 6
)
Von diesem Array habe ich zwei. In den beiden stehen hauptsächlich verschiedene Werte. Doch ich muss nun überprüfen, ob in dem einem Array ein Wert drin steht vom anderem. Die Array können auch unterschiedlich lang sein. Daher muss ich also irgendwie jeden Wert in dem einem Array mit jedem Wert aus dem anderen vergleichen und gucken ob sie gleich oder unterschiedlich sind.
Am besten wäre es auch noch wenn sobald einer gleich ist das "true" einfach zurück gegeben wird.
Ich hoffe ihr habt eine Idee und könnt mir damit weiterhelfen.
Danke im Voraus
4 Antworten
Mir fallen verschiedene Möglichkeiten ein.
a) Verwende array_intersect und prüfe, ob die erwartete Anzahl an Elementen vorhanden ist.
b) Verwende array_merge und prüfe, ob die erwartete Anzahl an Elementen vorhanden ist.
c) Fasse beide Arrays zu einem Array zusammen, merke dir die Anzahl derer Elemente, wirf Duplikate heraus und schau dann, ob die Länge noch gleich des gemerkten Wertes ist. PHP bietet für einige Teilschritte bereits eigene Funktionen an.
d) Iteriere über eines der Arrays und prüfe innerhalb jeder Iteration, ob das aktuelle Element im zweiten Array vorhanden ist. So hast du zwei ineinander verschachtelte Schleifen.
<?php
$zaehler = 0;
# Array 1 nach Werten von Array 2 durchsuchen
foreach($array1 as $value) {
if(array_search($value, $array2) != FALSE) {
$zaehler++;
}
}
# Array 2 nach Werten von Array 2 durchsuchen
foreach($array2 as $value) {
if(array_search($value, $array1) != FALSE) {
$zaehler++;
}
}
echo "$zaehler gleiche Werte gefunden";
?>
Alex
Wenn du lediglich ermitteln möchtest, ob beide Arrays exakt dieselben Schlüssel/Werte-Paare enthalten:
if ($a == $b) { ... }
Ansonsten: http://php.net/manual/de/function.array-intersect.php
Nutze dafür die Funktion array_intersect(). Die bildet die Schnittmenge beider Arrays.