我试图将此代码从前端(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);
}
}
}
答案 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);
}
}