我将我的js数组发送到php。如果数组有一些元素,它工作正常。现在,我的数组为null。所以,我正在使用is_null
检查我的数组是否为空,并且它的工作方式如下所示:
//sending array
xmlhttp.send('myArray='+encodeURIComponent(JSON.stringify(myArray)));
console.log(encodeURIComponent(JSON.stringify(myArray)));
//shows -> %5Bnull%5D
console.log(JSON.stringify(myArray));
//shows -> [null]
我的PHP是:
<?php
if(is_null(json_decode($_POST['myArray']))){
$arr = array("workdetails" => array(array("company_name" => "My Old Company", "role" => "web application developer", "employees" => "91")));
echo json_encode($arr);
}
else {
$data = json_decode($_POST['myArray']);
//echo json_encode($data); // If I do this, then I am getting back [null] in js
$arr = array("workdetails" => array(array("company_name" => "My New Company", "role" => "senior web application developer", "employees" => "911")));
echo json_encode($arr);
}
?>
即使数组为[null]
,也始终会执行else语句。
答案 0 :(得分:0)
来自手册:
如果无法解码json或编码数据深于递归限制,则返回NULL。
所以你可能只有有效的数据。
如果你把
$_POST['myArray'] = 'arweiouwreauiwaeruirewaiu';
之前它是否会转到is_null
条件,因为它的Json数据无效
即使未设置$_POST['myArray'] == ''
或$_POST['myArray'] == null
或$_POST['myArray']
,您也会转到is_null
条件,因此$_POST['myArray']
可能不会像您预期的那样为空。