PHP将变量插入字符串以用于发布请求

时间:2016-01-15 16:16:37

标签: php

当我只有$ 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);

2 个答案:

答案 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);