Auflösen mehrdimensionaler Array-Postings mit PHP und CURL
Beim Senden eines Formulars mit CURL an ein Remote-PHP-Skript können bei der Bearbeitung Probleme auftreten mehrdimensionale Array-Daten. Aufgrund der nicht unterstützten Struktur in CURLOPT_POSTFIELDS tritt häufig ein Fehler beim Konvertieren eines Arrays in einen String auf.
Eine Möglichkeit, diese Herausforderung zu bewältigen, besteht darin, eine benutzerdefinierte Funktion zu verwenden, wie beispielsweise die in der Antwort bereitgestellte:
<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>
Diese Funktion verwendet ein Array als Eingabe und reduziert es rekursiv, wodurch ein neues Array erstellt wird, in dem jeder Wert einem bestimmten Schlüssel zugewiesen wird. Indem wir die zu postenden Arrays an diese Funktion übergeben, erhalten wir ein modifiziertes Array mit einer kompatiblen Struktur für CURLOPT_POSTFIELDS.
<code class="php">$arrays = array( 'name' => array( 'first' => array( 'Natali', 'Yura' ) ) ); http_build_query_for_curl( $arrays, $post );</code>
Durch die Verwendung des modifizierten $post-Arrays, das eine abgeflachte Struktur hat, können wir erfolgreich senden die mehrdimensionalen Daten über CURL, ohne dass der Konvertierungsfehler auftritt:
<code class="php">curl_setopt($this->ch, CURLOPT_POSTFIELDS, $post);</code>
Das obige ist der detaillierte Inhalt vonWie übermittle ich mehrdimensionale Array-Daten über PHP und CURL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!