2013-10-04 121 views
0

我试图让下面的输出,将产生以下JSONJSON编码和PHP数组

[{"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); 

它给输出as

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

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

+0

' $ array [] = x'与'array_push($ array,x)'相同。 – Barmar

+0

'-2'从哪里来?也许还有其他一些代码覆盖了这个? – Barmar

回答

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!

+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}] 
+0

这几乎肯定只是一个复制错误,因为缺少')'的代码甚至不会运行。 – Barmar

+0

是最后一部分只是回答我想的问题 –

+0

嗯......我已经纠正了缺少的支架,但仍然只有一个项目...奇怪。 –

1

使用else意味着你将只得到一个或您的阵列中的其它项目。如果你想他们两个,尝试:

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

我不知道为什么丢失邮件的错误说Department而非email,但是这是一个不同的问题。

+0

看起来他的输出和代码实际上不匹配 –

+0

我认为他做了很多SO复制错误 - 代码中没有'-2',但它在输出中。 – Barmar

+0

雅我要么他没有显示完整的代码,或者他假设输出 –