php索引数组索引值重复,php – 数组根据索引删除重复项/保留第一次出现

我写了一个简单的算法,只在我的艺术家数组中存储第一个名称.我不关心艺术家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;

}

}

解决方法:

如果您不关心艺术家ID,那么:

$tmp = array_unique(array_map(function($value) {

return $value["name"];

}, $performers));

结果将是:

Array

(

[0] => Grouplove

[2] => Coldplay

)

除此以外:

$tmp = array();

foreach($performers as $performer) {

if(!in_array($performer["name"], array_map(function($value) {

return $value["name"];

}, $tmp))) {

$tmp[] = $performer;

}

}

结果将是:

Array

(

[0] => Array

(

[id] => 12

[name] => Grouplove

)

[1] => Array

(

[id] => 43

[name] => Coldplay

)

)

标签:php-5-3,php,performance,algorithm

来源: https://codeday.me/bug/20190831/1777328.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值