dsasd12314 2013-01-08 18:08
浏览 14
已采纳

从现有数组创建一个新数组(php)

Okay I'm quite experienced with C# but am very new with PHP so please bear with me.

I have an existing array that looks a bit like this

Array
(
[0] => Array
    (
        [author] => Gavin
        [weighting] => 2743
    )

[1] => Array
    (
        [author] => Bob
        [weighting] => 2546
    )

[2] => Array
    (
        [author] => Gavin
        [weighting] => 2227
    )
)

Now what I want to do is loop through that and end up with a new array that has 2 keys (Gavin and Bob) and Bob's value is 2546 while Gavin's is 4970.

Right now I have this which nearly works but the last author gets a duplicate value and I can't sort it?

if (array_key_exists($authorName, $Authors)) {
    foreach ($Authors as $key_name => &$key_value) {
        if ($key_name == $authorName)
        {
                $key_value = $key_value + $weight;
        }
    }
}
else {
    $Authors[$authorName] = $weight;
}

What am I doing wrong here?

  • 写回答

2条回答 默认 最新

  • douling8772 2013-01-08 18:12
    关注

    This should do the trick

    $newarray = array();
    foreach($yourarray as $a) {
        //create array if not created
        if(!isset($newarray[$a['author']])) {
            $newarray[$a['author']] = 0;
        }
        //put value in array
        $newarray[$a['author']] += $a['weighting'];
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 在获取boss直聘的聊天的时候只能获取到前40条聊天数据
  • ¥20 关于URL获取的参数,无法执行二选一查询
  • ¥15 液位控制,当液位超过高限时常开触点59闭合,直到液位低于低限时,断开
  • ¥15 marlin编译错误,如何解决?
  • ¥15 有偿四位数,节约算法和扫描算法
  • ¥15 VUE项目怎么运行,系统打不开
  • ¥50 pointpillars等目标检测算法怎么融合注意力机制
  • ¥20 Vs code Mac系统 PHP Debug调试环境配置
  • ¥60 大一项目课,微信小程序
  • ¥15 求视频摘要youtube和ovp数据集