>백엔드 개발 >PHP 튜토리얼 >PHP 및 CURL을 통해 다차원 배열을 게시할 때 \'배열을 문자열로 변환하는 오류\'를 방지하는 방법은 무엇입니까?

PHP 및 CURL을 통해 다차원 배열을 게시할 때 \'배열을 문자열로 변환하는 오류\'를 방지하는 방법은 무엇입니까?

DDD
DDD원래의
2024-10-23 08:12:02453검색

How to Avoid the

PHP 및 CURL을 사용하여 다차원 배열 게시

CURL을 통해 양식에서 데이터를 제출하려고 하면 "배열을 문자열로 변환하는 오류"가 발생할 수 있습니다. 이는 다른 서버에서 실행되는 PHP 스크립트에 다차원 배열을 게시할 때 발생합니다. CURLOPT_POSTFIELDS에는 배열이 필요하므로 사용자는 http_build_query()와 같은 기존 방법을 활용할 수 없습니다.

해결책

이 문제를 해결하려면 "http_build_query_for_curl"이라는 사용자 지정 함수가 필요합니다. 다차원 배열을 순회하여 CURL에 적합한 형식으로 변환하는 함수입니다.

<code class="php">function http_build_query_for_curl( $arrays, &amp;$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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.