这是这个JavaScript(JSX)代码的正确PHP代码吗?

时间:2018-06-06 14:28:11

标签: javascript php reactjs

我试图将此代码从前端(JSX)移动到后端(PHP),因为它的工作不应该在客户端完成。我想知道这是否是以下JavaScript代码的正确解决方案。

我试图浏览DATA,这是一个具有不同参数的对象,并检查日期是否大于或等于今天的日期(今天或将来),并检查是否类型是"recare""tocall"将其附加到已经声明的相应数组(最初为空)。

我对PHP的经验很少,所以任何建议都会很棒!

DATA:

DATA = [
   '0': {type: "recare", value: "Hello", date: "2018-06-05", ... },
   '1': {type: "tocall", value: "World", date: "2018-06-13", ... },
   '2': {type: "recare", value: "People", ...}
];

JSX:

var recare = [];
var tocall = [];

DATA.map(function(k, i) {
    if (new Date(k.date) >= new Date().setHours(0, 0, 0, 0) &&
        k.type == 'recare') {

        recare.push(k);
    }
    else
        if (new Date(k.date) >= new Date().setHours(0, 0, 0, 0) &&
            k.type == 'tocall') {

            tocall.push(k);
        }
});

PHP:

$recare = [];
$tocall = [];

foreach ($data as $arr) {

    foreach ($arr as $key => $value) {
        $time = $arr["date"];
        if ((time()-(60*60*24)) < strtotime($time) && 
            $arr["type"] == "recare") {

           array_push($recare, $arr);
        } else if ((time()-(60*60*24)) < strtotime($time) &&
                   $arr["type"] == "tocall"){

            array_push($tocall, $arr);
        }
    }
}

1 个答案:

答案 0 :(得分:0)

我意识到除了嵌套循环之外它是正确的!我不知道为什么我决定这样做。但这是正确答案:

        foreach ($data as $arr) {                                           
            $time = $arr["date"];
            if((time()-(60*60*24)) < strtotime($time) && $arr["type"] == "recare"){
                array_push($recare, $arr);
            } else if ((time()-(60*60*24)) < strtotime($time) && $arr["type"] == "tocall"){
                array_push($tocall, $arr);
            }
        }