2015-07-21 79 views
0

我有如下所示的阵列结构从数组中删除重复项:基于多个键

Array 
(
    [0] => Array 
     (
      [title] => Blue 
      [image] => catalog/Color/blue.png 
     ) 
    [1] => Array 
     (
      [title] => Black 
      [image] => catalog/Color/black.png 
     ) 
    [2] => Array 
     (
      [title] => Black 
      [image] => catalog/Color/black.png 
     ) 
) 

我想要做的就是从数组中删除重复的元素。我试图使用array_unique($myarray),但它似乎不起作用。

回答

1

试试我的解决方案:

<?php 
function searchDuplicate($arr, $obj) { 
    foreach ($arr as $value) { 
     if ($value['title'] == $obj['title'] && $value['image'] == $obj['image']) { 
      return true; //duplicate 
     } 
    } 
    return false; 
}; 

$arr = array(
    array (
      'title' => 'Blue', 
      'image' => 'catalog/Color/blue.png' 
     ), 
    array (
      'title' => 'Black', 
      'image' => 'catalog/Color/black.png' 
     ), 
    array (
      'title' => 'Black', 
      'image' => 'catalog/Color/black.png' 
     ) 
); 

$result = array(); 
foreach ($arr as $obj) { 
    if (searchDuplicate($result, $obj) === false) { 
     $result[] = $obj; 
    } 
} 

print_r($result); 
+0

我想你可以返回'false'并使用'array_filter'。 – AbraCadaver

+0

是的,我明白了,但是当我使用array_filter时,我必须为@chhorn soro解释。顺便说一句,你的解决方案非常出色 –

+0

非常感谢你的优秀答案@ThiTran –

4

只需使用titleimage组合成的按键,它会保证唯一性:

foreach($array as $val) { 
    $result[$val['title'].$val['image']] = $val; 
} 
// if you want, get values and reindex 
$result = array_values($result); 
+1

真棒,+1 1环 –