gpt4 book ai didi

php - 如何递归地对特定数组键的所有值求和?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:51:19 24 4
gpt4 key购买 nike

我有一个这样的数组:

Array
(
[1000] => Array
(
[pv] => 36
)

[1101] => Array
(
[1102] => Array
(
[pv] => 92
)

[pv] => 38
)

[pv] => 64
)

无论它们出现的深度如何,如何找到具有键“pv”的所有数组元素的总和?

对于此示例,结果将为 36+92+38+64 = 230

最佳答案

另一种选择:

$sum = 0;
$array_obj = new RecursiveIteratorIterator(new RecursiveArrayIterator($array));
foreach($array_obj as $key => $value) {
if($key == 'pv')
$sum += $value;
}
echo $sum;

更新:只是想我会提到这个方法使用 PHP SPL Iterators.


Salathe 编辑:

过滤键和求和值(无需编写自定义迭代器)的简单(相对)方法是使用 RegexIterator 进行一些过滤,将生成的迭代器转换为数组,然后在其上使用方便的 array_sum 函数。这纯粹是一项学术练习,我当然不会提倡将其作为实现此目的的最佳 方法...但是,它只是一行代码。 :)

$sum = array_sum(
iterator_to_array(
new RegexIterator(
new RecursiveIteratorIterator(
new RecursiveArrayIterator($array)
),
'/^pv$/D',
RegexIterator::MATCH,
RegexIterator::USE_KEY
),
false
)
);

关于php - 如何递归地对特定数组键的所有值求和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3777995/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com