删除多维数组中的副本只有一个值在PHP中是重复的

时间:2015-09-18 15:31:42

标签: php arrays

这是一个多维数组。并且只删除名称中的重复值。或特定的索引或密钥。

$array = Array(
  Array(
    'name'  => 'duplicate',
    'slug'  => 'test'
  ),
  Array(
    'name'  => 'Foo',
    'slug'  => 'Bar'
  ),
  Array(
    'name'  => 'duplicate',
    'slug'  => 'Bar'
  ),
  Array(
    'name'  => 'test',
    'slug'  => 'Foo'
  ),
);

预期输出应为:

$array = Array(
  Array(
    'name'  => 'duplicate',
    'slug'  => 'test'
  ),
  Array(
    'name'  => 'Foo',
    'slug'  => 'Bar'
  ),
  Array(
    'name'  => 'test',
    'slug'  => 'Foo'
  ),
);

2 个答案:

答案 0 :(得分:1)

这样做:

$temp = array();
foreach ($array as $key => $arr) {
  if(in_array($arr['name'], $temp)) continue;
  $temp[] = $arr['name'];
  $res[]  = $arr;
}    
print_r($res);

答案 1 :(得分:0)

$targetArray = [];

foreach( $array as $element ) {
  if( false == array_key_exists( $element['name'], $targetArray) ) {
    $targetArray[$element['name']] = $element;
  }
}

$targetArray将获得所需的结果,但'name'中的$array属性名称也会有一个额外的密钥。如果您对额外的密钥没问题,则此代码更易于阅读。