PHP vergleichen Array
Ist es sowieso zum vergleichen von arrays in php mit Hilfe einer eingebauten Funktion, kurz tun, irgendeine Art von Schleife?
$a1 = array(1,2,3);
$a2 = array(1,2,3);
if (array_are_same($a1, $a2)) {
//code here
}
Btw, die array-Werte nicht immer in der gleichen Reihenfolge.
InformationsquelleAutor der Frage | 2009-05-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
InformationsquelleAutor der Antwort Alan Haggai Alavi
Vergleich von zwei arrays haben die gleichen Werte (dupliziert oder nicht, Art-jonglieren berücksichtigt) kann erfolgen, indem
array_diff()
in beide Richtungen:Diese gibt
TRUE
wenn die beiden arrays die gleichen Werte haben (nach der type-juggling).FALSE
sonst. Beispiele:Wie dieses Beispiel zeigt,
array_diff
Blätter array Schlüssel aus der Gleichung heraus und kümmert sich nicht um die Reihenfolge der Werte entweder und weder über wenn Werte vorhanden sind oder nicht.Soweit die Vervielfältigung hat, einen Unterschied zu machen, wird dies immer schwieriger. Soweit die "einfache" Werte betroffen sind (nur string-und integer-Werte),
array_count_values()
ins Spiel kommt, um die Informationen zu sammeln über welcher Wert gibt an, wie oft innerhalb eines Arrays. Diese Informationen können leicht verglichen werden mit==
:Diese gibt
TRUE
wenn die beiden arrays die gleichen Werte haben (nach der type-juggling) für die gleiche Menge an Zeit.FALSE
sonst. Beispiele:Dies kann weiter optimiert werden durch den Vergleich der Anzahl der zwei arrays, die erste, die ist relativ Billig und einen schnellen test, um zu sagen, dass die meisten arrays auseinander, wenn Zählwert Vervielfältigung einen Unterschied macht.
Diese Beispiele sind bisher zum Teil nur string-und integer-Werte und keine strengen Vergleich ist möglich mit
array_diff
. Mehr speziell für die strengen Vergleich istarray_search
. So Werte müssen gezählt werden und indiziert, so dass Sie verglichen werden kann, als nur drehen Sie Sie in eine Taste (wiearray_search
tut) wird es nicht.Dies ist ein bisschen mehr Arbeit. Doch am Ende der Vergleich ist der gleiche wie früher:
Es ist nur
$count
macht den Unterschied:Dieser beinhaltet eine Tabelle von Werten, so dass beide arrays denselben index verwenden. Auch ist es möglich zu verlassen früh das erste mal in der zweiten Reihe einen neuen Wert erlebt wird.
Diese Funktion kann auch hinzufügen, die strengen Kontext durch einen zusätzlichen parameter. Und durch das hinzufügen eines weiteren zusätzliche parameter würde dann zulassen, um suchen nach Duplikaten oder nicht. Das vollständige Beispiel:
Beispiele:
InformationsquelleAutor der Antwort hakre
@Cleanshooter tut mir Leid, aber diese macht nicht, was es wird erwartet todo: (also tut array_diff in diesem Zusammenhang erwähnt)
(Anmerkung: Sie können nicht mit leeren Funktionen vor PHP 5.5)
in diesem Fall ist das Ergebnis true, obwohl die arrays sind unterschiedlich.
was nicht bedeutet, dass
array_diff
ist so etwas wie:array_get_all_differences
. Erklärt in der mathematischen Sätze es berechnet:was so viel bedeutet wie alle Elemente aus dem ersten Satz, ohne alle Elemente vom zweiten Satz, die in den ersten Satz.
So, dass
berechnet, um
Die Schlussfolgerung ist, dass Sie zu tun, eine
array_diff
in "beide Richtungen" alle "Unterschiede" der beiden arrays.hoffe, das hilft 🙂
InformationsquelleAutor der Antwort P.Scheit
Sie können auch versuchen, auf diese Weise:
InformationsquelleAutor der Antwort Murz
Nur überprüfen
$a1 == $a2
-- was ist falsch mit, dass?InformationsquelleAutor der Antwort Alex Martelli
array_intersect()
gibt ein array mit allen die gemeinsamen Werte.InformationsquelleAutor der Antwort moonw
Eine schnelle Methode für den Vergleich von array-Werte kann in beliebiger Reihenfolge sein...
So...
arrays_are_same($array1, $array2)
zurückTRUE
InformationsquelleAutor der Antwort chichilatte
Schlussfolgerung aus dem Kommentar hier:
Vergleich der array-Werte gleich sind (nach der type juggling) und in der gleichen Reihenfolge nur:
Vergleich der array-Werte gleich sind (nach der type juggling) und in der gleichen Reihenfolge und array-keys sind die gleichen und in der gleichen Reihenfolge:
InformationsquelleAutor der Antwort Tyron
das array aus Benutzer oder Eingabe der array-Werte.Verwenden Sie Sortieren die Funktion Sortieren die beiden arrays. prüfen Sie mit einem ternären operator. Wenn die beiden arrays gleich sind, gibt es arrays gleich sind, sonst wird es print-arrays nicht gleich sind. es gibt keine loop-iteration hier.
InformationsquelleAutor der Antwort CJ Ramki
stellen Sie sicher, dass die Kreuzungen zu zählen ist das gleiche wie die beiden Quell-arrays
InformationsquelleAutor der Antwort rcourtna
Vergleichen die Werte von zwei arrays:
InformationsquelleAutor der Antwort 1Rhino
Wenn Sie nicht kümmern über Schlüssel und, dass gerade die Werte, dann ist das die beste Methode, um Werte zu vergleichen und stellen Sie sicher, dass die Duplikate gezählt werden.
Dieses nicht den Wert wahr, wie $mag hat 2 Werte im array, die gleich 3.
Dies funktioniert am besten, wenn Sie nur die Sorge um die Werte und Schlüssel, und Sie interessieren sich nicht für die Vervielfältigung.
$mag = '{"1":"1","2":"2","3":"3","4":"3"}';
$mag_evo = '1/2/3';
Diese true zurück, da alle Werte in beiden arrays, aber wie gesagt, bevor es kümmert sich nicht um eine Vervielfältigung.
InformationsquelleAutor der Antwort Case
Wenn Sie wollen, suchen einige Arrays innerhalb eine große Auswahl von arrays (>10k) dann viel schneller ist der Vergleich der serialisierten arrays (gespeichert im cache). Beispiel aus der Arbeit mit dem URL:
InformationsquelleAutor der Antwort revoke
versuchen Sie dies :
InformationsquelleAutor der Antwort Chintan
Soweit ich das beurteilen kann, gibt es nicht eine single built-in Funktion, werde es für Sie tun, jedoch so etwas wie:
Sollte den trick tun
InformationsquelleAutor der Antwort pnomolos
InformationsquelleAutor der Antwort