需要一个简单的PHP数组问题解决方案吗?

我真的很尴尬地问这样一个问题,但是有一天你花了一万个小时来完成最简单的功能,而你尝试解决它们的次数越多,你得到的解决方案就越复杂….我不知道我想浪费更多时间,所以这就是问题所在.

我有一个数组:

  $items=array(
    0=> array('name'=>'red','value'=>2),
    1=> array('name'=>'black','value'=>1),
    2=> array('name'=>'red','value'=>3)
  );

我需要一个检测相同名称函数,并将它们合并,然后将它们的值相加.这意味着在函数完成后,数组应如下所示:

  $items=array(
    0=>array('name'=>'red','value'=>5),
    1=>array('name'=>'black','value'=>1)
  );

(‘red’有两个值为2和3的条目,操作后,red应该有1个条目,值为5)

谢谢.

解决方法:

首先,你能简单地把它变成一个关联数组,以便它为你自己处理吗?

$items = array(
    'red' => 5,
    'black' => 1,
);

如果没有,你总是可以通过循环复制数组来做到这一点(不是最好的,但每次都有效):

$newItems = array();
foreach ($items as $item) {
    if (!isset($newItems[$item['name']])) {
        $newItems[$item['name']] = $item;
    } else {
        $newItems[$item['name']]['value'] += $item['value'];
    }
}
$items = array_values($newItems);

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...