Ho cercato di confrontare due array. L'uso di array_intersect non presenta problemi. Quando si usa array_diff e array con ~ 5.000 valori, funziona. Quando arrivo a ~ 10.000 valori, lo script muore quando arrivo a array_diff. L'attivazione di error_reporting non ha prodotto nulla.gestisce array di grandi dimensioni con array_diff
Ho provato a creare la mia propria funzione array_diff:
function manual_array_diff($arraya, $arrayb) {
foreach ($arraya as $keya => $valuea) {
if (in_array($valuea, $arrayb)) {
unset($arraya[$keya]);
}
}
return $arraya;
}
fonte: How does array_diff work?
mi aspetterei che fosse meno efficiente che quello array_diff ufficiale, ma in grado di gestire array di ~ 10.000. Sfortunatamente, entrambi array_diffs falliscono quando arrivo a ~ 15.000.
ho provato lo stesso codice su una macchina diversa e funziona benissimo, quindi non è un problema con il codice o PHP. Ci deve essere un limite impostato da qualche parte su quel particolare server. Qualche idea su come posso aggirare quel limite o modificarlo o solo scoprire di cosa si tratta?
Quali dati Avete provato che con? – Gumbo
Probabilmente è perché questo algoritmo è O (N^2). – kennytm
Stai eseguendo questo in un browser o una riga di comando? – tipu