Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 数组和元素的值相同吗?_Php - Fatal编程技术网

Php 数组和元素的值相同吗?

Php 数组和元素的值相同吗?,php,Php,如何对数组中元素的相同值求和 $arr = [ ['id' => 1, 'qty' => 100, 'name' => 'a'], ['id' => 1, 'qty' => 100, 'name' => 'a'], ['id' => 2, 'qty' => 100, 'name' => 'b'] ]; 成为: $arr = [ ['id' => 1, 'qty' => 200, 'name' =>

如何对数组中元素的相同值求和

$arr = [
   ['id' => 1, 'qty' => 100, 'name' => 'a'],
   ['id' => 1, 'qty' => 100, 'name' => 'a'],
   ['id' => 2, 'qty' => 100, 'name' => 'b']
];
成为:

$arr = [
   ['id' => 1, 'qty' => 200, 'name' => 'a'],
   ['id' => 2, 'qty' => 100, 'name' => 'b']
];
我很努力,但还是回来了

for($i=0; $i<count($cok);$i++){
        $item_id = $cok[$i]['id'];
        $quantity = $cok[$i]['quantity'];
        if (isset($new_items[$item_id])) {
            $new_items[$item_id] = ['quantity' => $new_items[$item_id]['quantity'] + $quantity];
        } else {
            $new_items[$item_id] = ['quantity' => $quantity];
        }
    }
[1=>['qty'=>200],2=>['qty'=>100]]

我很努力,但还是回来了

for($i=0; $i<count($cok);$i++){
        $item_id = $cok[$i]['id'];
        $quantity = $cok[$i]['quantity'];
        if (isset($new_items[$item_id])) {
            $new_items[$item_id] = ['quantity' => $new_items[$item_id]['quantity'] + $quantity];
        } else {
            $new_items[$item_id] = ['quantity' => $quantity];
        }
    }
潜入我的

和inplace snippet,返回您需要的准确信息:

<?
$arr = array(
    array('id' => 1, 'qty' => 100, 'name' => 'a'),
    array('id' => 1, 'qty' => 100, 'name' => 'a'),
    array('id' => 2, 'qty' => 100, 'name' => 'b')
);

$ids = array();
foreach ($arr as $i => $subarray) {
    if (!($remove_from_array = array_key_exists($subarray['id'], $ids))) {
        $ids[$subarray['id']] = 0;
    }
    $ids[$subarray['id']] += $subarray['qty'];
    if ($remove_from_array) {
        unset($arr[$i]);
    }
}
foreach ($arr as &$subarray) {
    $subarray['qty'] = $ids[$subarray['id']];
}

print_r($arr);
非常简单:

<?php
$arr = array(
    array('id' => 1, 'qty' => 100, 'name' => 'a'),
    array('id' => 1, 'qty' => 100, 'name' => 'a'),
    array('id' => 2, 'qty' => 100, 'name' => 'b')
);

$new_arr = array();
foreach($arr AS $item) {
  if(isset($new_arr[$item['id']])) {
    $new_arr[$item['id']]['qty'] += $item['qty'];
    continue;
  }

  $new_arr[$item['id']] = $item;
}

$arr = array_values($new_arr);

var_dump($arr);

你尝试过什么吗?foreach循环+基本数学你可以使用一个映射,它存储唯一的键,可能重复的键与我尝试的相同,但与我想要的不同