json_decode从数组中删除null、false和true


json_decode remove null,false,true from array

下面有一个json结果。

$abc =  '{
    "id":"375",
    "name":"Nilesh Y",
    "email":"nilesh.yadav@test.co.in",
    "mobile":"9076330330",
    "tracking_number":null,
    "home_tagged_address_id":null,
    "office_tagged_address_id":null,
    "time":1427254525,
    "logged_in":true,
    "method":true,
    "error":null,
    "home_address":null,
    "office_address":null
 }';

$a = json_decode($abc,true,JSON_BIGINT_AS_STRING);
print_r($a);

jsondecode解码后的结果是。

Array ( [id] => 375 [name] => Nilesh Y [email] => nilesh.yadav@intelliswift.co.in [mobile] => 9076330330 [tracking_number] => [home_tagged_address_id] => [office_tagged_address_id] => [time] => 1427254525 [logged_in] => 1 [method] => 1 [error] => [home_address] => [office_address] => )

如果你看到结果,它会删除错误:null和home_address:null

means [home_address] => ""为空我想在数组中打印空值,请告诉我如何进行

使用var_dump而不是print_r。安装xdebug扩展,这将使var_dump的输出更好。

你看到了吗?(http://3v4l.org/Y58fC)var_dump()将输出以下内容:

array(13) {
  'id' =>
  string(3) "375"
  'name' =>
  string(8) "Nilesh Y"
  'email' =>
  string(23) "nilesh.yadav@test.co.in"
  'mobile' =>
  string(10) "9076330330"
  'tracking_number' =>
  NULL
  'home_tagged_address_id' =>
  NULL
  'office_tagged_address_id' =>
  NULL
  'time' =>
  int(1427254525)
  'logged_in' =>
  bool(true)
  'method' =>
  bool(true)
  'error' =>
  NULL
  'home_address' =>
  NULL
  'office_address' =>
  NULL
}

你看,json_decode()正在按预期工作——你根本看不到它,因为print_r不会为NULL打印任何内容。

检查结果为:

if($a['home_address']===null){
    //your code
}

您已经收到了预期结果。当您执行print_r时,不会显示null值。证据本身就是密钥存在而价值不存在。您可以使用var_dump 进行确认