微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 使用CURLOPT_POSTFIELDS时进行数组2字符串转换

我有以下代码

// $postfields = array();
curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);

我的$postfields变量是一个参数数组.我有一个通知,有数组到字符串转换.它起作用.

我可以使用http_build_query()函数来取消通知,但是我使用@path_to_file来包含帖子文件.和http_build_query()中断文件包含.

我想知道是否有更多“正确”的方法来做到这一点.没有产生通知.

解决方法:

$postfields数组的某些值是否自己?这很可能是导致通知的原因. curl_setops期望它的第三个参数是一个数组,其键和值是字符串,如PHP’s manual page for the function中所述,尽管它可能不是很清楚:

This parameter can either be passed as a urlencoded string like ‘para1=val1&para2=val2&…’ or as an array with the field name as key and field data as value.

在这个引用中,关键点是para1 / 2和val1 / 2是字符串,如果需要,你可以将它们作为一个数组提供,其中键是para1和para2,值是val1和val2.

有两种方法可以消除通知.

第一种是使用http_build_query()并将您对@filepath的使用替换为CURLFile objects.不幸的是,只有在使用PHP 5.5或更高版本时才可以使用.手册的页面一个非常清晰简单的example of use.

如果使用CURLFiles不是你的选择,那么第二种方法json_encode()$postfields数组的值,这些数组本身就是数组.这不优雅,它要求您在另一侧解码JSON.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐