问题:
通过 CURL 将多维表单数组发布到 PHP 脚本在不同的主机上会导致“数组到字符串转换”错误。由于文件上传,curl_setopt() 的第三个参数必须是一个数组,用于将 Content-Type 标头设置为 multipart/form-data。但是,CURLOPT_POSTFIELDS 似乎不支持多维数组。
解决方案:
尽管 CURLOPT_POSTFIELDS 有限制,但有一个使用 http_build_query_for_curl() 函数的解决方法。该函数递归地将多维数组转换为适合curl_setopt()的平面数组。
示例代码:
<code class="php">function http_build_query_for_curl( $arrays, &$new = array(), $prefix = null ) { if ( is_object( $arrays ) ) { $arrays = get_object_vars( $arrays ); } foreach ( $arrays AS $key => $value ) { $k = isset( $prefix ) ? $prefix . '[' . $key . ']' : $key; if ( is_array( $value ) OR is_object( $value ) ) { http_build_query_for_curl( $value, $new, $k ); } else { $new[$k] = $value; } } } $arrays = array( 'name' => array( 'first' => array( 'Natali', 'Yura' ) ) ); http_build_query_for_curl( $arrays, $post ); print_r($post);</code>
输出:
Array ( [name[first][0]] => Natali [name[first][1]] => Yura )
这个平面数组可以作为第三个参数传递给curl_setopt(),通过CURL 成功发布多维数组。
以上是如何通过 PHP 和 CURL 发布多维数组?的详细内容。更多信息请关注PHP中文网其他相关文章!