Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中过滤数组数据并添加一个字段_Php_Arrays_Foreach - Fatal编程技术网

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

在PHP中过滤数组数据并添加一个字段,php,arrays,foreach,Php,Arrays,Foreach,我有以下数组: Array ( [data] => Array ( [0] => Array ( [amount] => 16800 [created] => 1438114651 [status] => pending )

我有以下数组:

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
                )
        )
)
我需要仅使用可用状态和两个创建日期之间的
筛选此数组的
金额之和

我需要为每个人设置
密码吗


非常感谢您的帮助。

您可能正在寻找以下内容:

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);
function totalAmount($array,$start=0,$end=1E+11){
$totalAvailable=0;
foreach($数组作为$项){
如果(
$item['status']=='available'
&&$item['created']>=$start
&&$item['created']<$end
)$totalAvailable+=$item['amount'];
}
返回$totalAvailable
}
$sum=totalAmount($foo['data'],$unixtimeStart,$unixtimestend);
我使用
=
作为启动条件,但如果需要,您可以进行调整。 此外,开始和结束参数现在是可选的。

请尝试此选项

$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;
$data=Array
(
[数据]=>阵列
(
[0]=>阵列
(
[金额]=>16800
[已创建]=>1438114651
[状态]=>挂起
)
[1] =>阵列
(
[金额]=>16800
[已创建]=>1435854159
[状态]=>可用
)
[2] =>阵列
(
[金额]=>3300
[已创建]=>1435711645
[状态]=>可用
)
)
)
$createdFrom=…;//从日期开始
$createdTo=…;//迄今为止
$total=0;
foreach($data['data']作为$array)
如果($array['created']>$createdfrom&&$array['created']<$createdTo)
if($array['status']==“available”)
$total+=$array['amount'];
echo$总计;

不,您不需要foreach。对于
来说,一个常规的
也会起作用……过滤/多维关注点略有不同:但关于这些答案的好信息仍然有效:但是,没有
数组和
?我个人更喜欢链接的答案。谢谢。这是第一部分。数据过滤呢?嗯,好的,以前没有看到日期范围标准部分。还有一个本机数组函数。。。我想到了阵列图。我错过了你问题的“中间”部分。更新函数的答案。效果非常好。我刚把你的
=