handling large arrays with array_diff

Posted by bigmac on Stack Overflow See other posts from Stack Overflow or by bigmac
Published on 2010-06-06T20:31:29Z Indexed on 2010/06/06 21:02 UTC
Read the original article Hit count: 280

Filed under:

I have been trying to compare two arrays. Using array_intersect presents no problems. When using array_diff and arrays with ~5,000 values, it works. When I get to ~10,000 values, the script dies when I get to array_diff. Turning on error_reporting did not produce anything.

I tried creating my own array_diff function:

function manual_array_diff($arraya, $arrayb) {
    foreach ($arraya as $keya => $valuea) {
        if (in_array($valuea, $arrayb)) {
            unset($arraya[$keya]);
        }
    }
    return $arraya;
}

source: http://stackoverflow.com/questions/2479963/how-does-array-diff-work

I would expect it to be less efficient that than the official array_diff, but it can handle arrays of ~10,000. Unfortunately, both array_diffs fail when I get to ~15,000.

I tried the same code on a different machine and it runs fine, so it's not an issue with the code or PHP. There must be some limit set somewhere on that particular server. Any idea how I can get around that limit or alter it or just find out what it is?

© Stack Overflow or respective owner

Related posts about php