我有一个对象数组,我想要对其中一个属性的值求和,例如:
Array
(
[0] => stdClass Object
(
[name] => jon
[commission] => 5
)
[1] => stdClass Object
(
[name] => smith
[commission] => 1
)
[2] => stdClass Object
(
[name] => philip
[commission] => 8
)
)
Run Code Online (Sandbox Code Playgroud)
我想总结阵列中的所有佣金,结果应该是14.
这有什么好办法?
ilp*_*jin 32
array_reduce可能是一种方法; 只需添加您的$array
$sum = array_reduce($array, function($carry, $item)
{
return $carry + $item->commission;
});
var_dump($sum);
Run Code Online (Sandbox Code Playgroud)
如果您使用的是PHP 5.5
$arr_new = array_sum(array_column($yourarray, 'commission'));
Run Code Online (Sandbox Code Playgroud)
假设$ arr存储您的信息.实现以下功能:
function sumProperties(array $arr, $property) {
$sum = 0;
foreach($arr as $object) {
$sum += isset($object->{$property}) ? $object->{$property} : 0;
}
return $sum;
}
Run Code Online (Sandbox Code Playgroud)
之后你只需要打电话sumProperties($array, 'commission').
此外,如果您有更多可以求和的属性,您可以用这些属性替换佣金.
$sum = 0;
foreach($arrObj as $key=>$value){
if(isset($value->commission))
$sum += $value->commission;
}
echo $sum;
Run Code Online (Sandbox Code Playgroud)