【发布时间】:2018-04-17 12:16:18
【问题描述】:
我正在尝试从 API 获取数据,为此我正在使用 php curl。
我的 API 数据如下所示:
{"COLUMNS":["COCD","CONAME","KINDOFACCOUNT","ACCOUNTCODE","ACCOUNTNAME","TELNO","FAX","ADDR","OPENINGBALANCE","DR_AMT","CR_AMT","VOUCHERDATE","SETTLEMENT_NO","CTRCODE","CTRNAME","TRANS_TYPE","VOUCHERNO","NARRATION","BILLNO","CHQNO","EXPECTED_DATE","TRADING_COCD","PANNO","EMAIL","MANUALVNO","BOOKTYPECODE","BILL_DATE","MKT_TYPE","GROUPCODE","BRSFLAG","SETL_PAYINDATE","LAST2SETL","ACCOUNTCODE1","GATEWAYID","PUNCH_TIME","TRANS_TYPE1"],"DATA":[["MCX","","PARTY","TT3405","ANTHONIRAJ P","","","","0","","","","","","","","","","","","","","","","","3","","","","","","","TT3405","","",""],["MCX","","PARTY","TT3405","ANTHONIRAJ P","","","","0","","","","","","","","","","","","","","","","","3","","","","","","","TT3405","","",""],["NSE_FNO","","PARTY","TT3405","ANTHONIRAJ P","","","","0","","","","","","","","","","","","","","","","","3","","","","","","","TT3405","","",""],["NSE_FNO","","PARTY","TT3405","ANTHONIRAJ P","","","","0","","","","","","","","","","","","","","","","","3","","","","","","","TT3405","","",""],["NSE_FNO","","PARTY","TT3405","ANTHONIRAJ P","","","","0","0.00","500.00","","0","0","","OP","0","OPENING BALANCE","0","0","","NSE_FNO","","","0","3","","","","","","","TT3405","","",""],["MCX","","PARTY","TT3405","ANTHONIRAJ P","","","","0","0.00","1192.77","","0","0","","OP","0","OPENING BALANCE","0","0","","MCX","","","0","3","","","","","","","TT3405","","",""]]}
我能够获取数组,即所有 COLUMNS 名称,但是当我尝试仅获取 COCD 列时,它说:注意:尝试获取非对象的属性
我的代码如下:
<?php
$url = 'http://myapi.cfm';
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "",
CURLOPT_HTTPHEADER => array(
"accept: application/json",
"cache-control: no-cache",
"content-type: application/json"
),));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
$characters = json_decode($response, true);
print_r ($characters['COLUMNS']);
foreach ($characters as $character) {
print_r ($character->CONAME . '<br>');
}
}
?>
请帮忙,我正在寻找答案很长时间。
【问题讨论】:
-
看起来你把它弄反了,你的容器是一个对象,所以
$characters->COLUMNS又是一个数组......所以循环中的$characters->COLUMNS[1]或$character[1]是@987654326 @. -
你明确告诉
json_decode()给你一个关联数组,所以你不会有任何对象,只有嵌套数组。而CONAME只是您的一个元素中的值,而不是键。 -
@CD001 当我使用 $characters->COLUMNS['CONAME'] 时出现同样的错误,注意:未定义索引:当我在循环中使用 $character['CONAME'] 时出现 CONAME
-
你应该漂亮地打印/
var_dump()解码后的数组,你会清楚地看到问题所在。 -
请使用 print_r ($character->CONAME . '
');到“回声$字符[0];”在 foreach 循环中。请这个鳕鱼使用:- foreach ($characters as $character) { //echo ''; print_r($字符);回声$字符[0]; //回显$字符[0]; }