尝试通过 CURL 从表单提交数据时,用户可能会遇到“数组到字符串转换错误”。当将多维数组发布到在不同服务器上运行的 PHP 脚本时,会发生这种情况。由于 CURLOPT_POSTFIELDS 需要一个数组,因此用户无法使用 http_build_query() 等传统方法。
要解决此问题,需要一个名为“http_build_query_for_curl”的自定义函数。此函数遍历多维数组并将其转换为适合 CURL 的格式。
<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; } } }</code>
要使用此函数,请将多维数组分配给变量并将其作为第一个变量传递函数的参数。第二个参数是一个空数组,用于保存转换后的数据。第三个参数是可选的,指定数组键的前缀。
<code class="php">$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 )
此转换后的数组现在可以与 CURLOPT_POSTFIELDS 一起使用,而不会遇到转换错误。
以上是通过 PHP 和 CURL 发布多维数组时如何避免'数组到字符串转换错误”?的详细内容。更多信息请关注PHP中文网其他相关文章!