有一个像这样的多维数组:
$A = array(
[0]=>
array(
["rel"]=> 4
["name"]=> "Bar"
...
)
[1]=>
array(
["rel"]=> 2
["name"]=> "Bar"
...
)
[2]=>
array(
["rel"]=> 1
["name"]=> "Foo"
...
)
[3]=>
array(
["rel"]=> 5
["name"]=> "Bar"
...
)
[4]=>
array(
["rel"]=> 4
["name"]=> "Tee"
...
)
)
我想删除基于特定键的重复项,同时保持除索引键之外的原始数组结构.
为了这个例子,假设我想删除那些具有相同键[“name”]的子数组.
所以最终结果应如下所示:
$X = array(
[0]=>
array(
["rel"]=> 4
["name"]=> "Bar"
...
)
[1]=>
array(
["rel"]=> 1
["name"]=> "Foo"
...
)
[2]=>
array(
["rel"]=> 4
["name"]=> "Tee"
...
)
)
我正在寻找这个问题的有效解决方案.
理想情况下是一个array_unique函数,它接受一个键值作为参数来查找给定数组的重复.
$X = array_key_unique($A,’name’);
解决方法:
这个功能应该做的工作:
function array_key_unique($arr, $key) {
$uniquekeys = array();
$output = array();
foreach ($arr as $item) {
if (!in_array($item[$key], $uniquekeys)) {
$uniquekeys[] = $item[$key];
$output[] = $item;
}
}
return $output;
}
并适用于上述特定问题:
$X = array_key_unique($A, 'name');
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。