json编码和php数组

时间:2013-10-04 16:09:29

标签: php arrays json

我正在尝试获得以下输出,以生成以下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吗? 请建议。谢谢。

3 个答案:

答案 0 :(得分: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}]

答案 1 :(得分:1)

使用else意味着您只需获取阵列中的一个或另一个条目。如果你想要它们,请尝试:

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

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

答案 2 :(得分: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");
}

Demo!