Php 基于特定密钥删除重复项

Php 基于特定密钥删除重复项,php,arrays,multidimensional-array,duplicate-data,Php,Arrays,Multidimensional Array,Duplicate Data,得到了如下多维数组: $A = array( [0]=> array( ["rel"]=> 4 ["name"]=> "Bar" ... ) [1]=> array( ["rel"]=> 2 ["name"]=> "Bar" ... ) [2]=> array( ["rel"]=> 1 ["name"]=> "Foo" ... )

得到了如下多维数组:

$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"
    ...
  )
)
我正在寻找解决这个问题的有效方法

理想情况下是一个
数组\u唯一的
函数,它接受一个
值作为参数来查找给定数组上的重复


$X=数组\键\唯一($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');
试试这个

 for ($i = 0; $i < count($A); $i++)
    {
      $repeated= null;
      for ($j = $i+1; $j < count($A); $j++)
      {
        if (strcmp($A[$j]['name'],$A[$i]['name']) === 0)
        {
          $repeated= $j;
          break;
        }
      }
      if (!is_null($repeated))
        array_splice($A,$repeated,1);
    }
    print_r($A);
for($i=0;$i
我不相信此解决方案可以让我瞄准特定的密钥。查看$X数组如何不包含$A的元素1和元素3,尽管它们具有不同的
rel
值。