is_null没有按预期工作

时间:2014-07-18 11:04:56

标签: php arrays

我将我的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语句。

1 个答案:

答案 0 :(得分:0)

来自手册:

  

如果无法解码json或编码数据深于递归限制,则返回NULL。

所以你可能只有有效的数据。

如果你把

$_POST['myArray'] = 'arweiouwreauiwaeruirewaiu';

之前它是否会转到is_null条件,因为它的Json数据无效

即使未设置$_POST['myArray'] == ''$_POST['myArray'] == null$_POST['myArray'],您也会转到is_null条件,因此$_POST['myArray']可能不会像您预期的那样为空。