Beim Posten von Formulardaten, die mehrdimensionale Arrays enthalten, mit CURL tritt häufig 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 verwendet 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:
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);
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3