【发布时间】:2019-04-05 13:57:39
【问题描述】:
首先,这不是一个重复的问题,因为我已经尝试了大部分堆栈答案。
我的数组中有大约138886 记录。
记录就像
[1] => Array
(
[country] => US
[state] => Albama
[city] => Brest
[postcode] => 225001-225003
[shipping_info] => Delivery Available
[is_zip_range] => 1
[zip_from] => 225001
[zip_to] => 225003
)
[2] => Array
(
[country] => BY
[state] => Brest
[city] => Brest
[postcode] => 225001-225003
[shipping_info] => Delivery Available
[is_zip_range] => 1
[zip_from] => 225001
[zip_to] => 225003
)
我想从postcode 值中唯一的所有记录我尝试过的一些方法是
方法一
$temp = array_unique(array_column($data, 'postcode'));
$filteredData = array_intersect_key($data, $temp);
但它仍然给出重复值。
方法二
$filteredData = array_map("unserialize", array_unique(array_map("serialize", $data)));
这是行不通的
方法三
function unique_multidim_array($array, $key) {
$temp_array = array();
$i = 0;
$key_array = array();
foreach($array as $val) {
if (!in_array($val[$key], $key_array)) {
$key_array[$i] = $val[$key];
$temp_array[$i] = $val;
}
$i++;
}
return $temp_array;
}
$details = unique_multidim_array($array,'postcode');
它正在运行,但速度太慢,大约需要 2/3 分钟。
让我知道我可以用于唯一数组的任何其他方法。 帮助将不胜感激
【问题讨论】:
-
你试过了吗 -
array_column($data, null, 'postcode')? -
@NigelRen 似乎,OP 正在等待 array_column 最后 15 分钟的结果 :)
-
这很奇怪。我从方法 3 中针对数组中的 100 万个值运行该函数,处理时间为 2 秒。这意味着你的机器真的很慢。希望您在生产中没有那么慢的机器。
-
@NigelRen 是的,它正在工作。
标签: php arrays performance multidimensional-array