我有一个多维数组:
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
我没有运气。如何过滤重复项?
干杯。
答案 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);