J'ai essayé de comparer deux tableaux. L'utilisation de array_intersect ne présente aucun problème. Lorsque vous utilisez array_diff et des tableaux avec ~ 5000 valeurs, cela fonctionne. Quand j'arrive à ~ 10 000 valeurs, le script meurt quand j'arrive à array_diff. Activer error_reporting n'a rien produit.gérer de grands tableaux avec array_diff
J'ai essayé de créer ma propre fonction array_diff:
function manual_array_diff($arraya, $arrayb) {
foreach ($arraya as $keya => $valuea) {
if (in_array($valuea, $arrayb)) {
unset($arraya[$keya]);
}
}
return $arraya;
}
source: How does array_diff work?
Je pense qu'il soit moins efficace que que le array_diff officiel, mais il peut gérer des tableaux de ~ 10 000. Malheureusement, les deux array_diffs échouent quand j'arrive à ~ 15 000.
J'ai essayé le même code sur une machine différente et ça marche bien, donc ce n'est pas un problème avec le code ou PHP. Il doit y avoir une limite définie quelque part sur ce serveur particulier. Une idée de comment je peux contourner cette limite ou la modifier ou simplement découvrir ce que c'est?
Avec quelles données avez-vous testé cela? – Gumbo
Probablement parce que cet algorithme est O (N^2). – kennytm
Exécutez-vous ceci dans un navigateur ou une ligne de commande? – tipu