【发布时间】:2020-05-18 15:32:25
【问题描述】:
这是我第一次使用 curl,我很困惑 $response 的格式究竟如何,以及我如何访问我想要的信息。我正在尝试从 PHP 中的 curl 响应访问特定变量,以便在将来的条件中使用。我获得了用作 API 端点的 URL 和标头,因此无法对此进行任何更改。这是 curl 响应的代码:
$ch = curl_init();
$url = "https://thewebsitesurl.com";
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'x-branch: 21',
'x-branchhash: fijef89ivjw8934y8f9fifk920a',
'accept: application/json'
));
$response = curl_exec($ch);`
var_dump($response) 的内容产生:
string(187) "{"code":"5122","time":"1589812650","voucher":{"code":"5122","comments":"","amount":"11.00","balance":"11.00","created":"1589609333","expiry":"1652616000","redeemed":false,"voided":false}}"
我需要访问“已赎回”和“作废”字段。当然,这是一个很大的长字符串意味着我不能这样做(我相信)。我应该设置一个 CURLOPT 以使响应不会作为一个大字符串接收吗?
如果我用 $data = var_dump(json_decode($result, true)); 进一步解码它内容是:
array(3) { ["code"]=> string(4) "5122" ["time"]=> string(10) "1589814039" ["voucher"]=> array(8) { ["code"]=> string(4) "5122" ["comments"]=> string(0) "" ["amount"]=> string(5) "11.00" ["balance"]=> string(5) "11.00" ["created"]=> string(10) "1589609333" ["expiry"]=> string(10) "1652616000" ["redeemed"]=> bool(false) ["voided"]=> bool(false) } }
对我来说,这似乎比长字符串更可行。但是,我正在努力访问 ["expiry"]、["redeemed'] 和 ["voided"] 变量。事实上,我只是在努力访问我尝试过的 ["code"] 字符串“5122”:
echo $data[0]['code'];
echo $data[0]["code"];
echo $data['code'];
echo $data["code"];
所有 4 个回声都是空白的。我试图删除“curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);”以及。之后 var_dump($result);看起来像:
{"code":"5122","time":"1589815247","voucher":{"code":"5122","comments":"","amount":"11.00","balance":"11.00","created":"1589609333","expiry":"1652616000","redeemed":false,"voided":false}}bool(true)
我可能在这里误解了一些基本的东西。但是对于如何访问 ["expiry"]、["redeemed'] 和 ["voided"] 中的值的任何帮助,我们将不胜感激。感谢您的帮助。
【问题讨论】:
-
$data = var_dump将var_dump的结果分配给$data和 NOTjson_decode。 -
你从哪里得到
0?只是echo $data['code'];和echo $data['voucher']['expiry'];等等...