Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.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_Arrays_Sum - Fatal编程技术网

Php 在单个数组中按键组合值

Php 在单个数组中按键组合值,php,arrays,sum,Php,Arrays,Sum,没有什么能真正实现我想要实现的目标。我有以下数组: Array( [0] => Array ( [chicken] => 7 ) [1] => Array ( [cheese] => 9 ) [2] => Array ( [marinade] => 3 ) [3] => Array ( [cookbook] => 7

没有什么能真正实现我想要实现的目标。我有以下数组:

Array(

[0] => Array
    (
        [chicken] => 7
    )

[1] => Array
    (
        [cheese] => 9
    )

[2] => Array
    (
        [marinade] => 3
    )

[3] => Array
    (
        [cookbook] => 7
    )

[4] => Array
    (
        [chicken] => 11
    )

[5] => Array
    (
        [cheese] => 6
    )

[6] => Array
    (
        [marinade] => 12
    )

)
我想通过键对所有值求和。如果这个键在数组中多次出现,比如chicken,我想对这些值求和

array
(
[chicken] => 18,
[cheese] => 16
... etc

)

因此,首先需要一个循环来迭代第一个数组,以获得第二级数组。然后可以从每个数组中获取当前键和值,将键关联的新数组中的值相加

// where the sums will live
$sum = [];

foreach($array as $item) {
    $key = key($item);
    $value = current($item);
    if (!array_key_exists($key, $sum)) {
        // define the initial sum of $key as 0
        $sum[$key] = 0; 
    }
    // add value to the sum of $key
    $sum[$key] += $value;
}

这里有一个简单的例子,希望对大家有所帮助

$result = array();
foreach($data as $key => $value) 
{   
     $valueKey = key($value);
     $result[$valueKey] += $value[$valueKey];
}

显示您的尝试和出错的地方。我的尝试没有汇总值,但只保留最后/最高值,因此该代码是无用的。如果我写的任何代码都可以用来发布,我肯定会在这个网站上鼓励你展示你的尝试。特别是在处理类似问题时,我理解,而且我通常也会理解。问题是,我一直在盲目地盯着自己看这段代码,目前正在尝试另一种方法,为此我删除了以前的代码。当我得到一个新的尝试时,我将进行更新。我添加了一个应该有效的答案,但为了将来,请提供您的代码尝试,即使是错的。你必须知道,在这种情况下,$value也是一个数组,并根据此编辑你的答案…如果你使用isset而不是数组,你的代码可能会更快。我很怀疑,在现代版本中,你会发现两者之间存在明显的现实差异。。