我有一个看起来有点像这样的数组
array(
[0] => array(
['id'] => 29
['name'] => john
)
[1] => array(
['id'] => 30
['name'] => joe
)
[2] => array(
['id'] => 29
['name'] => jake
)
)
这种情况持续了一段时间。
我在其他地方(here)和(here)发现了这个问题,但两者都没有效果。
使用第一个我得到以下数组
array(
[0] => 29
[1] => jake
)
使用te第二个,它只过滤掉完全相同的重复项,而不是重复jus相同的id
。
我希望从阵列中移除相同id
的所有重复项,我该怎么做?
答案 0 :(得分:5)
简单使用PHP> = 5.5.0:
$result = array_column($array, null, 'id');
任选地:
$result = array_values(array_column($array, null, 'id'));
答案 1 :(得分:4)
$filteredUsers = [];
foreach ($users as $user) {
$filteredUsers[$user['id']] = $user;
}
// optionally:
// $filteredUsers = array_values($filteredUsers);
答案 2 :(得分:2)
如果你想删除副本并单独留下一个:
IF EXISTS(SELECT * FROM tempdb.sys.tables WHERE [name] = '#tasks') BEGIN
DROP TABLE #tasks;
END;
--save to temp table
SELECT TaskId, TaskDescription, TaskType into #tasks FROM Tasks
--select from temp table
SELECT TaskId, TaskDescription, TaskType FROM #tasks
--select from second table using temp table
SELECT AttachmentId, TaskId, [FileName], FileLocation
FROM TaskAttachments where TaskID in(select TaskId from #tasks where TaskType = 1)
否则:
$array = array(
array(
'id' => 29,
'name' => 'john'
),
array(
'id' => 30,
'name' => 'joe'
),
array(
'id' => 29,
'name' => 'jake'
)
);
$filter = [];
$array = array_filter($array, function($a) use (&$filter) {
$ret = !isset($filter[$a['id']]);
$filter[$a['id']] = true;
return $ret;
});
这将打印:
$duplicate = array_count_values(array_map(function($i) {
return $i['id'];
}, $array));
$array = array_filter($array, function($a) use ($duplicate) {
return $duplicate[$a['id']] <= 1;
});
var_dump($array);