Array_Unique过滤

时间:2013-02-07 15:05:18

标签: php arrays sorting

我有一个多维数组:

    Array
(
    [0] => Array
        (
            [Id] => 1
            [MTime_Id] => 1
            [MName] => Breakfast
            [DName] => Other Cereals
            [IName] => 
            [Date] => 2013-02-05
        )

[1] => Array
    (
        [Id] => 1
        [MTime_Id] => 1
        [MName] => Breakfast
        [DName] => Porridge
        [IName] => Oats,Milk,Sugar
        [Date] => 2013-02-06
    )

[2] => Array
    (
        [Id] => 1
        [MTime_Id] => 1
        [MName] => Breakfast
        [DName] => Porridge
        [IName] => Oats,Milk,Sugar,Oats,Milk,Sugar
        [Date] => 2013-02-05
    )

我正在尝试使用数组唯一来过滤这个

 [IName] => Oats,Milk,Sugar,Oats,Milk,Sugar

我没有运气。如何过滤重复项?

干杯。

3 个答案:

答案 0 :(得分:1)

如果您过滤输入,因此IName字段中没有多余的空格,您可以使用这样简单的内容进行过滤:

$array[2]['IName'] = implode(',', array_unique(explode(',', $array[2]['IName'])));

答案 1 :(得分:0)

问题是你有两个燕麦,牛奶,糖作为IName的元素,在阵列三你有燕麦,牛奶,糖,燕麦,牛奶,糖。这不一样!

“燕麦,牛奶,糖”==“燕麦,牛奶,糖,燕麦,牛奶,糖”(或“燕麦,牛奶,糖”.equals(“燕麦,牛奶,糖,燕麦,牛奶,糖”) ))是假的。

如果你想让它独一无二,你必须爆炸单个结果,然后在它上面做一个独特的,或者你必须将单个值存储在单独的字段中......

BTW:这是一个如何从多维数组中删除重复项的链接How to remove duplicate values from a multi-dimensional array in PHP

答案 2 :(得分:0)

我不确定是否存在函数,这是一个简单的解决方案, 你可以循环数组,得到每个值的结果,然后爆炸结果,并将其插入到数组中。 然后使用array_unique函数。 试试这个:

$result = array();
foreach($arrays as $array)
{
    $tmp = $array['IName'];
    $tmp2 = explode(',',$tmp);
    foreach ($tmp2 as $t)
    {
        $result[]=$t;
    }
}
$array_unique = array_unique($result);