繁体   English   中英

json编码和php数组

[英]json encode and php array

我正在尝试获取以下输出,将产生以下json

[{"description":"name","errorcode":777},{"description":"Department","errorcode":"yyy"}]

PHP

if(empty($name)){        
    $errordesc[] = array('description' => 'name','errorcode' =>  777);           
}
else if(empty($email)){
    $errordesc[] = array('description' => 'Department','errorcode' =>  "yyy");
}

当我做

 echo json_encode($errordesc);

它给出的输出为

[{"description":"name","errorcode":-2}]

问题出在php数组中。我应该使用array_push吗? 请指教。谢谢。

这是您代码中的语法错误

else if(empty($email){<-----here

else if(empty($email)){<-----must be like this 

看到您的代码实际上我认为该数组仅包含一项,这就是为什么您不需要正确地执行逻辑就不需要将数组推入。

 $errordesc[] = array('description' => 'name1','errorcode' =>  1); 
 $errordesc[] = array('description' => 'name2','errorcode' =>  2); 

echo json_encode($errordesc);

您将获得带有两个项目的json字符串

[{"description":"name1","errorcode":1},{"description":"name2","errorcode":2}]

使用else意味着您只会在数组中获得一个或另一个条目。 如果您都想要它们,请尝试:

if(empty($name)){        
    $errordesc[] = array('description' => 'name','errorcode' =>  777);           
}
if(empty($email){
    $errordesc[] = array('description' => 'Department','errorcode' =>  "yyy");
}

我不确定为什么丢失电子邮件的错误是Department而不是email ,但这是另一个问题。

您的代码当前具有以下结构:

if (condition) {
    # code...
} 
elseif (condition) {
    # code...
}

当第一个if条件的值为FALSE此块中的代码才会执行​​。 您得到的JSON输出表明只考虑了一个条件块。

如果要进行两项检查,请尝试使用以下结构:

if (condition) {
    # code...
} 
if (condition) {
    # code...
}

使用您的代码,它应该看起来像:

if(empty($name)){        
    $errordesc[] = array('description' => 'name','errorcode' =>  777);           
}
if(empty($email)) {
    $errordesc[] = array('description' => 'Department','errorcode' =>  "yyy");
}

演示!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM