当我只有$ json变量的单个字符串时,我的函数工作,但是当我尝试将值作为变量插入时,我的函数不起作用。不确定是什么问题。这是我的代码:
$myAPIKey = "apikey";
$command = "campaignstats";
$id = "9000";
$date = "2016-01-11";
$groupby = "domain";
function call($apiKey, $cmd, $dt, $i, $gpby) {
$url = "http://data.company.net/auth";
// $json = '{"command" : "campaignstats",
// "date" : "2016-01-11",
// "id" : "9000",
// "groupby" : "domain"}';
$json = '{"command" : '.$cmd.',
"date" : '.$dt.',
"id" : '.$i.',
"groupby" : '.$gpby.'}';
$sAPIKey = auth($apiKey);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'json='.$json.'&sapi_key='.$sAPIKey);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$raw_output = curl_exec($ch);
curl_close($ch);
$output = json_decode($raw_output, true);
}
call($myAPIKey, $command, $id, $date, $groupby);
答案 0 :(得分:1)
您可以使用json_encode
,只需根据您拥有的数据构建关联数组。
$data = [
'command' => $cmd,
'data' => $dt,
'id' => $i,
'groupby' => $gpby
];
$string = json_encode($data);
然后将其作为帖子字段的值
传递curl_setopt($ch, CURLOPT_POSTFIELDS, 'json='.$string.'&sapi_key='.$sAPIKey);
答案 1 :(得分:1)
使用json_encode,根据您想要的数据构建数组。
$json = [
'command' => $cmd,
'data' => $dt,
'id' => $i,
'groupby' => $gpby
];
$data = json_encode($json);
然后进入后期字段
curl_setopt($ch, CURLOPT_POSTFIELDS, 'json='.$data.'&sapi_key='.$sAPIKey);
编辑你的通话功能,如订单$ date将是第三个位置,$ id将是第四个位置。
call($myAPIKey, $command, $date, $id, $groupby);