在PHP中过滤数组的数据并添加字段


Filter datas of an array in PHP and add up a field

我有以下数组:

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
                )
        )
)

我需要过滤这个数组,sum of the amounts只与available status和两个创建的日期之间?

我需要foreach吗?

非常感谢你的帮助

您可能正在寻找这样的内容:

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);

我使用>=作为启动条件,但您可以根据需要进行调整。此外,start和end参数现在是可选的。

请尝试一下

$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;