防止json_decode将false变为空值

时间:2017-02-22 11:37:07

标签: php json

使用json_decode时,布尔值false会变为空值。我使用的json字符串具有可以为空,false,1或某些文本值的值,并且我只想使用具有值的字段,即使该值为false。所以在做的时候

$array = array();
foreach($obj as $key => $value){
  if($value != ''){
    $array[$key] = $value;
  }
}

具有false值的字段不会保存到$ array中。有办法吗?

更新:执行print_r($ obj)时,所有false值都为空。所以我不认为!=是问题所在。如果我print_r json字符串空值是" null"和false值是" false",但是当print_r-ing json_decoded对象都变成空值时。

3 个答案:

答案 0 :(得分:2)

如果您想检查空字符串而不考虑其他值,请使用!==代替!=

答案 1 :(得分:2)

你的错误因

而消失
if($value != ''){

使用

if($value !== ''){

因为php中的false为空并且您的验证!=因传递而停止错误

答案 2 :(得分:1)

将比较从!=更改为!==

$array = array();
foreach($obj as $key => $value){
  if($value !== ''){
    $array[$key] = $value;
  }
}