He estado tratando de comparar dos matrices. Usar array_intersect no presenta problemas. Al usar array_diff y arrays con ~ 5,000 valores, funciona. Cuando llego a ~ 10,000 valores, el script muere cuando llego a array_diff. Activar error_reporting no produjo nada.manejo de grandes matrices con array_diff
He intentado crear mi propia función array_diff:
function manual_array_diff($arraya, $arrayb) {
foreach ($arraya as $keya => $valuea) {
if (in_array($valuea, $arrayb)) {
unset($arraya[$keya]);
}
}
return $arraya;
}
fuente: How does array_diff work?
me esperaba que fuera menos eficiente que la que el array_diff oficial, pero se puede manejar matrices de ~ 10.000. Lamentablemente, ambos array_diffs fallan cuando llego a ~ 15,000.
Probé el mismo código en una máquina diferente y funciona bien, por lo que no es un problema con el código o PHP. Debe haber algún límite establecido en algún lugar en ese servidor en particular. ¿Alguna idea de cómo puedo superar ese límite o modificarlo o simplemente descubrir qué es?
¿Con qué datos lo has probado? – Gumbo
Probablemente es porque este algoritmo es O (N^2). – kennytm
¿Está ejecutando esto en un navegador o en una línea de comando? – tipu