0

我正在使用 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;但它只是出现了一个空白页,所以我不确定我做错了什么,或者是否有另一种访问状态消息的方法,我可以以更友好的方式将其打印给用户方法。

任何帮助都会很重要!

4

2 回答 2

1

json_decode 以数组输出和对象输出两种方式工作。通过添加,true);到末尾,您已经启用了数组输出,以便您可以使用它来访问它。

$result['result']['statusmsg']

如果您只使用$result = json_decode($curl_response);它,那么它将是一个对象,您可以通过使用来访问它

$result->result->statusmsg

我还建议输出 JSON,echo $curl_response;以便您可以更轻松地查看其结构。如果您的浏览器没有美化它,请安装 JSONView for Chrome 之类的东西。

更新:

由于结果是一个对象数组,您需要遍历结果以获取每个状态消息,如下所示将完成

foreach($result->result as $key=>$value) {
    echo $value->statusmsg;
}

或您可以使用的数组输出

foreach($result['result'] as $key=>$value) {
    echo $value['statusmsg'];
}
于 2013-06-28T14:48:30.980 回答
0

我意识到我现在是在自言自语,但我已经弄清楚并发布它以防其他人发现这个话题:

结果是一个多维数组,因此您需要遍历所有数组才能获得所需的密钥 - 在本例中为状态消息。

要从数组中获取数组键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 数组标志。)*

于 2013-06-28T15:59:11.797 回答