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