Beim Posten von Formulardaten, die mehrdimensionale Arrays enthalten, mit CURL tritt ein Fehler bei der „Array-zu-String-Konvertierung“ auf. Dies tritt auf, wenn versucht wird, CURLOPT_POSTFIELDS mit einem Array festzulegen, das Arrays enthält.
Da der Content-Type-Header mehrteilig/Formulardaten sein muss, um die Dateiübertragung zu erleichtern, muss das Array in eine Abfragezeichenfolge konvertiert oder http_build_query() verwendet werden. ist nicht machbar. Darüber hinaus ist der Zugriff auf den Code des empfangenden Hosts zum Serialisieren und Deserialisieren des Arrays keine Option.
Um dieses Problem zu beheben, kann eine benutzerdefinierte Funktion namens http_build_query_for_curl eingesetzt werden. Es durchläuft das Array rekursiv und konvertiert es in ein Format, das für CURL POST-Anfragen geeignet ist. Das geänderte Array kann dann $post zugewiesen und an curl_setopt() übergeben werden, wodurch der Fehler vermieden wird.
Hier ist der Code für die Funktion http_build_query_for_curl und ein Beispiel für ihre Verwendung:
<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>
Das obige ist der detaillierte Inhalt vonWie kann der Fehler „Array-zu-String-Konvertierung' beim Senden mehrdimensionaler Arrays in CURL mit PHP behoben werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!