我使用WHM/cPanel的API通过PHP为用户创建帐户。我已经有了所有的cURL选项,可以将正确的URL字符串发送到服务器等,并且帐户也做得很好,这样一切都很好。
我现在需要做的是能够打印出一条正确的响应消息,而不仅仅是将所有数据转储到屏幕上,因为这是为普通用户使用的,他们不需要看到在后台完成的所有名称服务器、DNS等信息。
JSON结果在输出的数组中有一个statusmsg
键,但我不知道如何打印出来。
这是一个错误的结果:
$result = json_decode($curl_response, true);
(来自var_dump)
object(stdClass)#1 (1) {
["result"]=> array(1) {
[0]=> object(stdClass)#2 (4) {
["options"]=> NULL
["rawout"]=> NULL
["statusmsg"]=> string(55) "Sorry, a passwd entry for that username already exists."
["status"]=> int(0)
}
}
}
我试过做echo $result->result->statusmsg;
,但它只是出现了一个空白页,所以我不确定我做错了什么,也不确定是否有其他方法可以访问状态消息。我可以以更友好的方式打印给用户。
任何帮助都将是伟大的!
json_decode有两种工作方式:数组输出和对象输出。通过将,true);
添加到末尾,您已经启用了Array输出,因此要访问它,您将使用。
$result['result']['statusmsg']
如果你只使用$result = json_decode($curl_response);
,那么它将是一个对象,你可以使用访问它
$result->result->statusmsg
我还建议使用echo $curl_response;
输出JSON,这样您可以更容易地看到它的结构。如果你的浏览器没有美化它,那么安装一些类似于JSONView for Chrome的东西。
更新:
由于结果是一个对象数组,您需要循环遍历结果以获得每个状态消息,如下所示将实现
foreach($result->result as $key=>$value) {
echo $value->statusmsg;
}
或者对于阵列输出,可以使用
foreach($result['result'] as $key=>$value) {
echo $value['statusmsg'];
}
我意识到我现在在自言自语,但我已经想好了,并发布了它,以防其他人发现这个话题:
结果是一个多维数组,因此您需要遍历所有数组才能获得所需的键——在本例中是状态消息。
从数组中获取数组密钥statusmsg
:
Array ( [result] => Array (
[0] => Array (
[statusmsg] => Sorry, that username (testingw) is reserved.
[status] => 0
[rawout] =>
[options] =>
)
)
)
您需要回显:$result[result][0]['statusmsg']
然后,您还可以使用status
键进行更多的错误检查,因为它将分别为1或0表示通过或失败。
*(感谢上面的Mike用json_decode数组标志让我走上正轨。)*