我试图删除重复的数组..但它似乎不起作用......
这是我的阵列:
array
(
[1] => Array
(
[id] => 141
[yt] => 5
[PHD] => Jan
[type] => Mercedes
[aid] => 5
)
[2] => Array
(
[id] => 2
[yt] => 5
[PHD] => Jan
[type] => Mercedes
[aid] => 5
)
[3] => Array
(
[id] => 3
[yt] => 5
[PHD] => Jan
[type] => Mercedes
[aid] => 5
)
[4] => Array
(
[id] => 10
[yt] => 5
[PHD] => Jan
[type] => Mercedes
[aid] => 5
)
[5] => Array
(
[id] => 4
[yt] => 5
[PHD] => Peter
[type] => Audi
[aid] => 5
)
)
输出
[5] => Array
(
[id] => 4
[yt] => 5
[PHD] => Peter
[type] => Audi
[aid] => 5
)
数组使用SQL查询创建,因此我预先编写了数组:
foreach($All_cars as $key=>$row) {
.....
print_r($All_cars);
}
这样输出整个数组。
我试过这个但没有效果。
$result = array_unique($All_cars );
我希望你们能帮助我......因为我已经整整试了一整天。
感谢您的帮助。
答案 0 :(得分:2)
试试这个
$input = array_map("unserialize", array_unique(array_map("serialize", $input)));
或者
$array = [
[
'id' => '123',
'foo' => 'aaa',
'bar' => 'bbb'
],
[
'id' => '123',
'foo' => 'ccc',
'bar' => 'ddd'
],
[
'id' => '567',
'foo' => 'eee',
'bar' => 'fff'
]
];
$ids = array_column($array, 'id');
$ids = array_unique($ids);
$array = array_filter($array, function ($key) use ($ids) {
return in_array($key, array_keys($ids));
}, ARRAY_FILTER_USE_KEY);
结果是:
Array
(
[0] => Array
(
[id] => 123
[foo] => aaa
[bar] => bbb
)
[2] => Array
(
[id] => 567
[foo] => eee
[bar] => fff
)
)
或者
如果您需要消除特定键上的重复项,例如mysqli id,这里只是一个简单的功能
function search_array_compact($data,$key){
$compact = [];
foreach($data as $row){
if(!in_array($row[$key],$compact)){
$compact[] = $row;
}
}
return $compact;
}
注意强> 您可以传递一组键并添加一个外部foreach,但每个附加键的速度会慢2倍。
或者
您可以使用关联数组。
$temp_array = array();
foreach ($array as &$v) {
if (!isset($temp_array[$v['name']]))
$temp_array[$v['name']] =& $v;
}
这会创建一个临时数组,使用$v['name']
作为键。如果已经存在具有相同键的元素,则不会将其添加到临时数组中。
您可以使用
将关联数组转换回顺序数组$array = array_values($temp_array);
示例代码和输出:http://codepad.org/zHfbtUrl
答案 1 :(得分:0)
试试这个
for($i=0; $i < count($array); $i++)
{
for($j=0; $j < count($array); $j++)
{
if($array[$i] == $array[$j])
{
unset $array[$i];
}
}
}