Ich habe versucht, zwei Arrays zu vergleichen. Die Verwendung von array_intersect zeigt keine Probleme. Wenn Sie array_diff und Arrays mit ~ 5.000 Werten verwenden, funktioniert es. Wenn ich zu ~ 10.000 Werten komme, stirbt das Skript, wenn ich zu array_diff komme. Das Aktivieren von error_reporting hat nichts ergeben.Umgang mit großen Arrays mit array_diff
Ich habe versucht, meine eigene array_diff Funktion erstellen:
function manual_array_diff($arraya, $arrayb) {
foreach ($arraya as $keya => $valuea) {
if (in_array($valuea, $arrayb)) {
unset($arraya[$keya]);
}
}
return $arraya;
}
Quelle: How does array_diff work?
Ich würde erwarten, dass es weniger effizient sein, dass als die offizielle array_diff, aber es Arrays von ~ 10.000 verarbeiten kann. Leider schlagen beide array_diffs fehl, wenn ich ~ 15.000 erreiche.
Ich habe den gleichen Code auf einer anderen Maschine und es läuft gut, so ist es kein Problem mit dem Code oder PHP. Es muss irgendwo auf diesem bestimmten Server ein Limit festgelegt werden. Irgendeine Idee, wie ich diese Grenze umgehen oder ändern oder einfach herausfinden kann, was es ist?
Mit welchen Daten haben Sie das getestet? – Gumbo
Wahrscheinlich liegt es daran, dass dieser Algorithmus O (N^2) ist. – kennytm
Führen Sie dies in einem Browser oder einer Befehlszeile aus? – tipu