Php 从嵌套数组中删除重复的值
我正在让堆栈删除重复的键,并将它们分配给一个新数组 我的阵列:Php 从嵌套数组中删除重复的值,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我正在让堆栈删除重复的键,并将它们分配给一个新数组 我的阵列: array ( [1] => Array ( [name] => name1 [actions] => add ) [2] => Array (
array (
[1] => Array
(
[name] => name1
[actions] => add
)
[2] => Array
(
[name] => name1
[actions] => remove
)
[3] => Array
(
[name] => name2
[actions] => dosomething1
)
[4] => Array
(
[name] => name2
[actions] => dosomething1
)
)
array (
[1] => Array
(
[name] => name1
[actions] => add
[actions] => remove
)
[2] => Array
(
[name] => name2
[actions] => dosomething1
[actions] => dosomething1
)
)
我正在努力实现的目标:
array (
[1] => Array
(
[name] => name1
[actions] => add
)
[2] => Array
(
[name] => name1
[actions] => remove
)
[3] => Array
(
[name] => name2
[actions] => dosomething1
)
[4] => Array
(
[name] => name2
[actions] => dosomething1
)
)
array (
[1] => Array
(
[name] => name1
[actions] => add
[actions] => remove
)
[2] => Array
(
[name] => name2
[actions] => dosomething1
[actions] => dosomething1
)
)
我尝试过的:
public function array_unique_multidimensional($input)
{
$serialized = array_map('serialize', $input);
$unique = array_unique($serialized);
return array_intersect_key($input, $unique);
}
它错误地返回了相同的数组。任何帮助都将不胜感激。您不能有两个带有保存值的数组键(所以对于给定元素不可能有两个actions元素),您可以做的是有一个包含多个值的action元素
$results = array();
foreach ($array as $v){
if (!isset($results[$v["name"]]){
$results[$v["name"]] = array("name"=>$v["name"], "actions"=>array($v["actions"]));
} else {
$results[$v["name"]]["actions"][] = $v["actions"];
}
}
如果要删除顶级数组上的字符串键,则可以执行以下操作
$results = array_values($results);
工作就像一个魅力,你是一个明星