我有一个数组,我用这个函数迭代它的前7个值:
function clicksLast7Days($data)
{
$path = $data->data->data->clicks;
$num_loops = 0;
foreach ($path as $key => $item){
$num_loops++;
if($num_loops > 7) break;
if ($key >= 0) {
$array[] = $item->clicks;
}
}
return json_encode($array);
}
数组的结构(如果有帮助)是:
["data"]=>
object(stdClass)#212 (3) {
["status_code"]=>
int(200)
["data"]=>
object(stdClass)#211 (3) {
["days"]=>
int(30)
["total_clicks"]=>
int(6)
["clicks"]=>
array(30) {
[0]=>
object(stdClass)#215 (2) {
["clicks"]=>
int(0)
["day_start"]=>
int(1466395200)
}
[1]=>
object(stdClass)#216 (2) {
["clicks"]=>
int(0)
["day_start"]=>
int(1466308800)
}
[2]=>
object(stdClass)#217 (2) {
["clicks"]=>
int(0)
["day_start"]=>
int(1466222400)
}
[3]=>
object(stdClass)#218 (2) {
["clicks"]=>
int(0)
["day_start"]=>
int(1466136000)
}
[4]=>
object(stdClass)#219 (2) {
["clicks"]=>
int(0)
["day_start"]=>
int(1466049600)
}
[5]=>
object(stdClass)#220 (2) {
["clicks"]=>
int(0)
["day_start"]=>
int(1465963200)
}
[6]=>
object(stdClass)#221 (2) {
["clicks"]=>
int(0)
["day_start"]=>
int(1465876800)
}
[7]=>
object(stdClass)#222 (2) {
["clicks"]=>
int(0)
["day_start"]=>
int(1465790400)
}
问题是通过使用我的函数我得到一个元素数组: [0,0,0,0,0,0,0]。但我想要的是获得它们的总和(在这种情况下是0),而不是数组,只是一个数字。
答案 0 :(得分:1)
$clicksArray = $data->data->data->clicks;
$sum = array_sum(
array_map(
$clicksArray,
function($clickElement) {
return $clickElement->clicks;
}
)
);
array_sum
将对某个数组的所有值求和。更多信息here
array_map
将在应用函数后返回数组的所有元素(因此,基本上在这里,我们只返回clicks
属性