微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 根据特定密钥删除重复项

一个像这样的多维数组:

$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 举报,一经查实,本站将立刻删除。

相关推荐