[英]Filter datas of an array in PHP and add up a field
I have the following array: 我有以下数组:
Array
(
[data] => Array
(
[0] => Array
(
[amount] => 16800
[created] => 1438114651
[status] => pending
)
[1] => Array
(
[amount] => 16800
[created] => 1435854159
[status] => available
)
[2] => Array
(
[amount] => 3300
[created] => 1435711645
[status] => available
)
)
)
I need to filter this array the sum of the amounts
only with the available status
and between two created dates ? 我需要过滤这个数组只有
available status
和两个创建日期之间sum of the amounts
?
Do I need a foreach
? 我需要一个
foreach
吗?
Thanks a lot for your help. 非常感谢你的帮助。
You're probably looking for something like this: 你可能正在寻找这样的东西:
function totalAmount($array, $start = 0, $end = 1E+11) {
$totalAvailable = 0;
foreach($array as $item) {
if(
$item['status'] == 'available'
&& $item['created'] >= $start
&& $item['created'] < $end
) $totalAvailable += $item['amount'];
}
return $totalAvailable
}
$sum = totalAmount($foo['data'], $unixtimeStart, $unixtimeEnd);
I used >=
for the start condition, but you can adjust if needed. 我使用
>=
作为开始条件,但您可以根据需要进行调整。 Also, the start and end parameters are now optional. 此外,start和end参数现在是可选的。
Please try this 请试试这个
$data= Array
(
[data] => Array
(
[0] => Array
(
[amount] => 16800
[created] => 1438114651
[status] => pending
)
[1] => Array
(
[amount] => 16800
[created] => 1435854159
[status] => available
)
[2] => Array
(
[amount] => 3300
[created] => 1435711645
[status] => available
)
)
)
$createdFrom = ...; // from date
$createdTo=...; // to date
$total=0;
foreach($data['data'] as $array)
if($array['created'] > $createdfrom && $array['created'] < $createdTo)
if($array['status']=="available")
$total+=$array['amount'];
echo $total;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.