我写了一个简单的算法来只存储我的艺术家数组中第一次出现的名字。我不关心艺术家 ID。该算法运行良好,但我担心性能。如果 $performers 数组是 200 位艺术家,有没有人看到一种更简单的编写方法也可以提高性能?
$performers = array(
array('id' => '12','name' => 'Grouplove'),
array('id' => '24','name' => 'Grouplove'),
array('id' => '43','name' => 'Coldplay')
);
$tmp = array();
foreach($performers as $performer)
{
$count = 0;
foreach($tmp as $test)
{
if($performer['name'] == $test['name'])
{
$count++;
}
}
if(!$count)
{
$tmp[] = $performer;
}
}
最佳答案
将它们添加到 $tmp
数组时,您可以将键指定为艺术家的姓名。然后你可以只检查 isset($tmp[$performer['name']])
是否为真,如果它已经存在则跳过它。这样你就可以避免内部循环。填充新的 $tmp
数组后,如果键有问题,您只能使用 array_values($tmp)
获取值。
$tmp = array();
foreach($performers as $performer) {
if(!isset($tmp[$performer['name']]){
$tmp[$performer['name']] = $performer;
}
}
你会得到这样的东西:
array(
'Grouplove' => array(
'id' => '12',
'name' => 'Grouplove',
),
'Coldplay' =>array(
'id' => '43',
'name' => 'Coldplay'
)
);
关于php - 数组根据索引删除重复项/保留第一次出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18028211/