我正在获取堆栈删除重复的密钥并将它们分配给新的数组。
我的阵列:
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);
}
错误地返回相同的数组。任何帮助将不胜感激。
答案 0 :(得分:1)
你不能有两个带有保存值的数组键(因此不可能有给定元素的两个动作元素)你可以做的是拥有一个包含多个值的动作元素。
$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);