【发布时间】:2017-11-14 15:48:42
【问题描述】:
我正在尝试使用 POST 方法将一些数据发送到给定的 API。 我编写了一个函数来执行我项目中的任何 CURL 请求。 当我将它与值为数组的参数一起使用时,该数组会自动转换为字符串“Array”。
示例: 这是我的功能:
function callAPI($method, $url, $data = false)
{
$curl = curl_init();
// First var_dump()
var_dump($data);
switch ($method)
{
case "POST":
curl_setopt($curl, CURLOPT_POST, 1);
if ($data) {
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
// Second var_dump()
var_dump($data);
}
break;
case "PUT":
curl_setopt($curl, CURLOPT_PUT, 1);
break;
default:
if ($data)
$url = sprintf("%s?%s", $url, http_build_query($data));
}
$headers = array();
$headers[] = 'Accept: application/json';
$headers[] = 'Content-Type: application/json';
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
$auth = "username:pwd";
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($curl, CURLOPT_USERPWD, $auth);
curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($curl);
....
}
这是我的函数的一个用例:
$values = array(
"param1" => "value1",
"param2" => "value2",
"param3" => "value3",
...
"param10" => array("23"),
);
callAPI('POST', "https://myapi", $values);
第一个 var_dump 打印正确的值:
array(4) {
["param1"]=>
string(6) "value1"
["param2"]=>
string(6) "value2"
["param3"]=>
string(6) "value3"
["param10"]=>
array(1) {
[0]=>
string(2) "23"
}
}
但是第二个给“param10”的值是错误的:
array(4) {
["param1"]=>
string(6) "value1"
["param2"]=>
string(6) "value2"
["param3"]=>
string(6) "value3"
["param10"]=>
string(5) "Array"
}
有没有人想办法解决这个问题?
【问题讨论】:
标签: php arrays curl post multidimensional-array