如何删除多维数组中特定键的重复值?
我有以下多维数组:如何删除多维数组中特定键的重复值?
<?php
$array = array(
array('first' => 1, 'second' => 1),
array('first' => 1, 'second' => 1),
array('first' => 2, 'second' => 1),
array('first' => 3, 'second' => 1),
array('first' => 3, 'second' => 1),
array('first' => 3, 'second' => 1));
我怎样可以删除重复的first
值?同时保留重复的second
值。
处理数组应该是后:
array(
array('first' => 1, 'second' => 1),
array('first' => 2, 'second' => 1),
array('first' => 3, 'second' => 1));
代码:
$array = array(
array('first' => 1, 'second' => 1),
array('first' => 1, 'second' => 1),
array('first' => 2, 'second' => 1),
array('first' => 2, 'second' => 1),
array('first' => 3, 'second' => 1),
array('first' => 3, 'second' => 1)
);
$temp = array();
$new = array();
foreach($array as $value)
{
if(!in_array($value['first'],$temp))
{
$temp[] = $value['first'];
$new[] = $value;
}
}
现在$new
包含以下内容:
array(
array('first' => 1, 'second' => 1),
array('first' => 2, 'second' => 1),
array('first' => 3, 'second' => 1),
);
谢谢,但如何我如果还键“第二”和“第三” - 在第二和第三我没有删除重复 –
根据您更新的问题更新了答案。 – Anne
这将删除重复的数组:
$array = array_map('unserialize', array_unique(array_map('serialize', $array)));
的关键仍然是相同的,所以你可能需要修复它们。
我想只从键“第一”中删除值 - 在我的数组中可以另外键,例如“秒”和“第三” - 这些键不能删除重复 –
这是一个非常“不雅”的方法。 – Leigh
什么,如果数组是这样
$array = array(
array('first' => 1, 'second' => 1),
array('first' => 1, 'second' => 1),
array('first' => 1, 'second' => 12),
array('first' => 2, 'second' => 1),
array('first' => 2, 'second' => 1),
array('first' => 3, 'second' => 1),
array('first' => 3, 'second' => 1)
);
$temp = array();
$new = array();
你想新的数组美元的新包含以下内容:
array(
array('first' => 1, 'second' => 1),
array('first' => 2, 'second' => 1),
array('first' => 3, 'second' => 1),
);
或
array(
array('first' => 1, 'second' => 1),
array('first' => 1, 'second' => 12),
array('first' => 2, 'second' => 1),
array('first' => 3, 'second' => 1),
);
?
你能给我们一个应该被删除的键和一些不应该的例子吗?当然预期的结果! – Florent
我有点困惑你在输出中寻找什么。你需要'$ array = array(1,2,3,4,5,6);'或'$ array = array(array('first'=> 1),array('first'=> 2),数组('first'=> 3));'? – curtisdf
对不起,我更新了我的回答 –