我有一个像这样的数组:
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;
Update:只是想我会提到这个方法使用 PHPSPL 迭代器。 http://php.net/manual/en/book.spl.php
萨拉特编辑:
过滤键并对值求和(无需编写自定义迭代器)的一种简单(相对)方法是使用RegexIterator
,将生成的迭代器转换为数组并使用方便的array_sum
其上发挥作用。这纯粹是一种学术练习,我当然不会提倡它作为best实现这一目标的方法...但是,它只是一行代码。 :)
$sum = array_sum(
iterator_to_array(
new RegexIterator(
new RecursiveIteratorIterator(
new RecursiveArrayIterator($array)
),
'/^pv$/D',
RegexIterator::MATCH,
RegexIterator::USE_KEY
),
false
)
);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)