Javascript “传送”;[……”是;字符串到php驱动的后端
因此,有一个函数调用后端,它获取特定时间段内的所有预订并将它们返回到前端。如果在相应的时间范围内没有保留,后端将返回字符串“[]”。然后,该数据再次传输到后端,在那里我评估是否存在保留。 为此,我想在后端使用php函数“empty()。 那里的代码基本上是这样的Javascript “传送”;[……”是;字符串到php驱动的后端,javascript,php,Javascript,Php,因此,有一个函数调用后端,它获取特定时间段内的所有预订并将它们返回到前端。如果在相应的时间范围内没有保留,后端将返回字符串“[]”。然后,该数据再次传输到后端,在那里我评估是否存在保留。 为此,我想在后端使用php函数“empty()。 那里的代码基本上是这样的 $allReservationsOrRequestsByUser = json_decode($allReservationsOrRequestsByUser); if(empty($allReservationsOrRequestsB
$allReservationsOrRequestsByUser = json_decode($allReservationsOrRequestsByUser);
if(empty($allReservationsOrRequestsByUser)){
$overlapExists = false;
}else{
$overlapExists =
checkForOverlapWithExistingRequestsOrReservations($todayDate,
$allReservationsOrRequestsByUser);
}
echo $overlapExists;
现在,在if条件之前,我尝试了上面的代码,包括解码和不解码。在这两种情况下,“empty()”函数始终返回false,而当数组实际为空时,则不应返回false。
我做错了什么 您正在尝试检查“[]”是否为空。所以它不是空的字符串。。。在使用空()进行检查之前,可以将其转换为正确的数组,如 那就回来了,
bool(false) <- Without Json decode
bool(true) <- With Json decode
bool(false)您需要检查数组或对象中的数组数据
e、 如果获取的数组包含
if(empty($allReservationsOrRequestsByUser[0]['name'])){
$overlapExists = false;
}else{
$overlapExists = checkForOverlapWithExistingRequestsOrReservations($todayDate,
$allReservationsOrRequestsByUser);
}
如果对象,则使用此名称,并且名称是数据库表的列名
if(empty($allReservationsOrRequestsByUser[0]->name)){
$overlapExists = false;
}else{
$overlapExists = checkForOverlapWithExistingRequestsOrReservations($todayDate,
$allReservationsOrRequestsByUser);
}
echo $overlapExists;
但是我在检查之前已经解码了?请看我上面的代码:$AllReservationSorRequestsByser=json_decode($AllReservationSorRequestsByser);“在这之后,$AllReservationSorRequestsByser应该包含数组,不是吗?是的,应该,如果你使用var_dump($AllReservationSorRequestsByser)会发生什么?我没有使用var_dump进行调试,相反,我将结果回显到前端,然后在那里执行console.log。但是,如果我只是回显$AllReservationSorRequestsByser,然后用console.log输出它,那么我会得到未更改的“[]”字符串。@JSONBUG123执行var\u转储
。直接调试,而不是通过三层删除。好的,谢谢你的提示。我的问题是,在分别调用后端之前,我在前端执行了不必要的“JSON.stringify”。通过这个字符串,字符串看起来像是“[]”,所以它确实包含了两个引号^^^^这就是为什么整个过程无法工作的原因,谢谢!这里不需要使用空,只需!allReservationsOrRequestsByUser
也会这样做,而不会不必要地抑制错误报告。在json\U解码后执行var\u转储($AllReservationSorRequestsByser)
,并向我们展示您得到了什么…?
if(empty($allReservationsOrRequestsByUser[0]->name)){
$overlapExists = false;
}else{
$overlapExists = checkForOverlapWithExistingRequestsOrReservations($todayDate,
$allReservationsOrRequestsByUser);
}
echo $overlapExists;