عند نشر بيانات النموذج التي تحتوي على مصفوفات متعددة الأبعاد باستخدام CURL، فإن مواجهة خطأ "تحويل الصفيف إلى سلسلة" هي مشكلة شائعة. يحدث هذا عند محاولة تعيين CURLOPT_POSTFIELDS بمصفوفة تتضمن مصفوفات.
نظرًا لأن رأس نوع المحتوى يجب أن يكون متعدد الأجزاء/بيانات النموذج لتسهيل نقل الملفات، أو تحويل المصفوفة إلى سلسلة استعلام أو استخدام http_build_query() غير ممكن. بالإضافة إلى ذلك، فإن الوصول إلى رمز المضيف المتلقي لإجراء تسلسل وإلغاء تسلسل المصفوفة ليس خيارًا.
لحل هذه المشكلة، يمكن استخدام وظيفة مخصصة تسمى http_build_query_for_curl. إنه يتكرر بشكل متكرر عبر المصفوفة، ويحولها إلى تنسيق مناسب لطلبات CURL POST. يمكن بعد ذلك تعيين المصفوفة المعدلة إلى $post وتمريرها إلى curl_setopt()، لتجنب الخطأ.
إليك رمز الدالة http_build_query_for_curl ومثال لاستخدامها:
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);
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3