|
Posted by James Benson on 01/12/06 02:10
Their should be no problem with what your trying to do, try the
following function, should act pretty much like array_diff();
if(!function_exists('array_diff')) {
function array_diff($array1, $array2)
{
$difference = array();
foreach($array1 as $key => $value)
{
if(is_numeric($key)) {
if(!in_array($value, $array2)) {
$difference[] = $value;
}
} else {
if(!array_key_exists($key, $array2)) {
$difference[] = $key;
}
}
}
return $difference;
}
}
// small test
$array1 = array_fill(0, 20000, 'banana');
$array2 = array();
print_r(array_diff($array1, $array2));
It also depends how much data the arrays contain
James
Jesse Guardiani wrote:
> Hello,
>
> I have an old version of php (4.3.2) that is acting rather strangely. I'm
> searching two large arrays (approx 22,000 records in each) using
> array_diff_key() from the PEAR PHP_Compat library:
>
> $result = $args[0];
> foreach ($args[0] as $key1 => $value1) {
> for ($i = 1; $i !== $array_count; $i++) {
> foreach ($args[$i] as $key2 => $value2) {
> if ((string) $key1 === (string) $key2) {
> unset($result[$key2]);
> break 2;
> }
> }
> }
> }
>
> And I'm getting aweful performance. I know it's a ton of records (22,000 *
> 22,000), but it shouldn't take 16 minutes on a P4 Xeon 2.4ghz!
>
> Has anyone seen this before? Is this a bug? Or are my math skills lacking and
> this is perfectly normal performance for the size of the data set?
>
> Thanks!
>
Navigation:
[Reply to this message]
|