【问题标题】:Array_Unique filteringArray_Unique 过滤
【发布时间】:2013-02-07 23:22:05
【问题描述】:

我有一个多维数组:

    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

我运气不好。如何过滤重复项?

干杯。

【问题讨论】:

  • W你想得到什么??最后一个元素 IName??我不明白你的问题。
  • 什么重复?你怎么知道这是重复的?
  • 在第二个元素中,我正在尝试删除重复项

标签: php arrays sorting


【解决方案1】:

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

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

【讨论】:

  • 感谢成功,我之前使用过 foreach,但由于某种原因它无法正常工作。
【解决方案2】:

问题是你在数组 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" )) 是假的。

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

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

【讨论】:

【解决方案3】:

我不确定是否存在为此的功能,这是一个简单的解决方案, 您可以循环数组,并获取每个值的结果,然后分解结果并将其插入数组中。 然后使用 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);

【讨论】:

    猜你喜欢
    • 2021-02-25
    • 2011-06-07
    • 1970-01-01
    • 1970-01-01
    • 2011-01-26
    • 2013-11-27
    • 2015-07-11
    相关资源
    最近更新 更多