【发布时间】:2018-05-02 05:08:11
【问题描述】:
我得到 3 维数组,在不同数组中有重复值,我想将这个 3 维数组组合成一个数组并删除最终数组中的重复值。
我的数组是:
Array
(
[0] => Array
(
[0] => Array
(
[role_id] => 2
[name] => name1
[email] => email1@somemail.com
)
[1] => Array
(
[role_id] => 2
[name] => name2
[email] => email2@somemail.com
)
[2] => Array
(
[role_id] => 2
[name] => name3
[email] => email3@somemail.com
)
)
[1] => Array
(
[0] => Array
(
[role_id] => 2
[name] => name4
[email] => email4@somemail.com
)
[1] => Array
(
[role_id] => 2
[name] => name3
[email] => email3@somemail.com
)
)
[2] => Array
(
[0] => Array
(
[role_id] => 2
[name] => name3
[email] => email3@somemail.com
)
[1] => Array
(
[role_id] => 2
[name] => name2
[email] => email2@somemail.com
)
)
[3] => Array
(
[0] => Array
(
[role_id] => 2
[name] => name3
[email] => email3@somemail.com
)
)
)
我尝试了以下解决方案,但没有奏效:
Solution-1: array_unique(array_merge($array1,$array2), SORT_REGULAR);
Solution-2: function array_flatten($array) {
if (!is_array($array)) {
return FALSE;
}
$result = array();
foreach ($array as $key => $value) {
if (is_array($value)) {
$result = array_merge($result, array_flatten($value));
}
else {
$result[$key] = $value;
}
}
return $result;
}
Solution-3: $input = array_map("unserialize", array_unique(array_map("serialize", $input)));
我想将此数组组合成一个单维数组,并从中删除重复值。我可以通过每个数组循环获得结果,但是执行时间会更长,我希望必须有一些简单的解决方案。谁能解决这个问题,谢谢。
【问题讨论】:
-
听起来不错。那么你尝试了什么?
-
更新了我的问题,请查看。
-
单数组是什么意思?您不能使此数据适合平面数组。您必须至少有一个级别的深度数组。此外,如果您使用 var_export 而不是 print_r/var_dump 会很好,因为 var_export 可以复制粘贴到代码中。
-
我正在从数据库中获取这些数组数据。
标签: php arrays sorting multidimensional-array