仅添加匹配数组元素 PHP 的值


Add values of only matching array elements PHP

假设我有一个数组:

Array
(
    [0] => Array
        (
            [filmType] =>  Symphony 15%
            [rollSize] => 36
            [linearFt] => 3
        )
    [1] => Array
        (
            [filmType] =>  Symphony 15%
            [rollSize] => 36
            [linearFt] => 3
        )
    [2] => Array
        (
            [filmType] =>  Symphony 15%
            [rollSize] => 48
            [linearFt] => 5
        )
    [3] => Array
        (
            [filmType] =>  Symphony 25%
            [rollSize] => 36
            [linearFt] => 7
        )
    [4] => Array
        (
            [filmType] =>  Symphony 35%
            [rollSize] => 36
            [linearFt] => 10
        )
    [5] => Array
        (
            [filmType] =>  Symphony 35%
            [rollSize] => 36
            [linearFt] => 10
        )

如何仅将唯一数组元素的 [linearFt] 相加。 我所说的独特是指[胶片类型]和[卷筒尺寸]相同。

我已经尝试了多种方式,包括搜索数组、数组过滤器和 usort...... 我是PHP的新手,这不是家庭作业。 感谢您的任何帮助!

所以我的输出将是:

$totalsArray = Array(
    [0] => Array
        (
            [filmType] =>  Symphony 15%
            [rollSize] => 36
            [linearFt] => 8
        )
    [1] => Array
        (
            [filmType] =>  Symphony 15%
            [rollSize] => 48
            [linearFt] => 3
        )
    [2] => Array
        (
            [filmType] =>  Symphony 25%
            [rollSize] => 48
            [linearFt] => 7
        )
    [3] => Array
        (
            [filmType] =>  Symphony 35%
            [rollSize] => 48
            [linearFt] => 20
        )

啊。我会用一个foreach循环来攻击它来获取每个数组,然后积累不同的类型和大小,并随时添加它们。它看起来像这样:

$filmTotals = array();
$filmTemp   = array();
foreach ($filmInventory as $film){
    $filmTemp[$film['filmType']][$film['rollSize']] = $filmTemp[$film['filmType']][$film['rollSize']] + $film['linearFt'];
}
// A second foreach to resort into the final format, nested to get the keys out to rename them correctly
foreach ($filmTemp as $filmType=>$film){
    foreach ($film as $filmSize=>$filmLength){
        $filmTotals[] = array('filmType'=>$filmType, 'rollSize'=>$filmSize, 'linearFt'=>$filmLength);
    } //END inner foreach
} // END outer foreach

试试这个:

foreach ($myArray as $value) {
   $sumsArray[$value['filmType']_$value['rollSize']]['length_tally'][] = $value['linearFt'];
}

将所有相似的filmTyperollSize分组,然后您可以将 array_sum() 与 length_tally 数组一起使用以给出总长度。

输出不会完全是您要查找的,但应该使您走上正确的道路。