WHM cPanel JSON/PHP API打印数组密钥问题


WHM cPanel JSON/PHP API printing array key issue

我使用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数组标志让我走上正轨。)*