假设我有一个数组:
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'];
}
将所有相似的filmType
和rollSize
分组,然后您可以将 array_sum() 与 length_tally
数组一起使用以给出总长度。
输出不会完全是您要查找的,但应该使您走上正确的道路。