"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية حل الخطأ \"تحويل الصفيف إلى سلسلة\" عند إرسال مصفوفات متعددة الأبعاد في CURL باستخدام PHP؟

كيفية حل الخطأ \"تحويل الصفيف إلى سلسلة\" عند إرسال مصفوفات متعددة الأبعاد في CURL باستخدام PHP؟

تم النشر بتاريخ 2024-11-06
تصفح:686

How to Solve the \

إرسال مصفوفات متعددة الأبعاد عبر CURL و PHP

عند نشر بيانات النموذج التي تحتوي على مصفوفات متعددة الأبعاد باستخدام 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);
بيان الافراج أعيد طبع هذه المقالة على: 1729642519 في حالة وجود أي انتهاك، يرجى الاتصال بـ [email protected] لحذفها
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3