2

我有一个多维数组:

    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

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

干杯。

4

3 回答 3

1

如果您过滤输入,因此在字段中没有额外的空格IName,您可以使用像这样简单的东西进行过滤:

$array[2]['IName'] = implode(',', array_unique(explode(',', $array[2]['IName'])));
于 2013-02-07T15:22:05.287 回答
0

问题是您在数组 2 中使用 Oats,Milk,Sugar 作为 IName 的元素,在数组 3 中您有 Oats,Milk,Sugar,Oats,Milk,Sugar。这不一样!

"Oats,Milk,Sugar"=="Oats,Milk,Sugar,Oats,Milk,Sugar"(或 "Oats,Milk,Sugar".equals("Oats,Milk,Sugar,Oats,Milk,Sugar"))是错误的。

如果你想让它独一无二,你必须分解单个结果,然后对它做一个唯一的,或者你必须将单个值存储在单独的字段中......

顺便说一句:这是一个链接如何从多维数组中删除重复项如何从 PHP 中的多维数组中删除重复值

于 2013-02-07T15:12:37.800 回答
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);
于 2013-02-07T15:13:27.280 回答