0

我正在尝试获取以下将生成以下 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 吗?请指教。在此先感谢。

4

3 回答 3

3

这是您的代码中的语法错误

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}]
于 2013-10-04T16:12:09.270 回答
1

使用else意味着您将只获得数组中的一个或另一个条目。如果你想要他们两个,试试:

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

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

于 2013-10-04T16:18:52.193 回答
0

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

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");
}

演示!

于 2013-10-04T16:21:49.260 回答