【发布时间】:2013-04-23 21:01:16
【问题描述】:
我喜欢在不使用in_array 的情况下比较两个数组,因为这两个数组都非常大(超过 50,000 个)。我喜欢为第一个数组中缺少的所有数组生成一个新数组。
我将使用的最快最有效的解决方案是什么?
第一个数组
SQL查询生成的多维数组
Array (
[0] => Array (
[id] => 17228219
[name] => ...
)
[1] => Array (
[id] => 17228220
[name] => ...
)
[2] => Array (
[id] => 17228221
[name] => ...
)
[3] => Array (
[id] => 17228222
[name] => ...
)
[4] => Array (
[id] => 17228223
[name] => ...
)
[5] => Array (
[id] => 17228224
[name] => ...
)
)
第二个数组
从简单 XML 生成
Array (
[0] => SimpleXMLElement Object (
[0] => 17228219
)
[1] => SimpleXMLElement Object (
[0] => 17228221
)
[2] => SimpleXMLElement Object (
[0] => 17228222
)
[3] => SimpleXMLElement Object (
[0] => 17228224
)
)
新数组
创建一个缺少 ID 的数组
Array (
[0] => Array (
[id] => 17228220
[name] => ...
)
[1] => Array (
[id] => 17228223
[name] => ...
)
)
【问题讨论】:
-
你试过
array_diff吗? -
第一个来自数据库,使用查询与第二个进行比较,而不是将其全部读入内存
-
假设这些 id 字段在每个数组中都是唯一的,我建议构建一个以
id => name为键的新数组。然后一个简单的 array_diff 将完成所有繁重的工作。 -
我确实尝试了 array_diff - 需要很长时间。是的,它有效,希望在没有那么多服务器负载的情况下提供更快的解决方案。
标签: php arrays multidimensional-array simplexml