根据多个键从Array中删除重复项

时间:2015-07-21 02:12:29

标签: php arrays

我有一个如下所示的数组结构:

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),但似乎无效。

2 个答案:

答案 0 :(得分:4)

只需使用titleimage组合作为键,就可以确保唯一性:

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

答案 1 :(得分:2)

试试我的解决方案:

<?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);
相关问题