CURL का उपयोग करके बहुआयामी सारणी वाले फॉर्म डेटा को पोस्ट करते समय, "ऐरे से स्ट्रिंग रूपांतरण" त्रुटि का सामना करना एक आम समस्या है। यह तब होता है जब CURLOPT_POSTFIELDS को एक ऐसे सरणी के साथ सेट करने का प्रयास किया जाता है जिसमें सरणियाँ शामिल होती हैं।
चूंकि फ़ाइल स्थानांतरण की सुविधा के लिए सामग्री-प्रकार हेडर मल्टीपार्ट/फॉर्म-डेटा होना चाहिए, सरणी को क्वेरी स्ट्रिंग में परिवर्तित करना या http_build_query() का उपयोग करना संभव नहीं है. इसके अतिरिक्त, सरणी को क्रमबद्ध और क्रमरहित करने के लिए प्राप्तकर्ता होस्ट के कोड तक पहुंचना एक विकल्प नहीं है।
इस समस्या को हल करने के लिए, http_build_query_for_curl नामक एक कस्टम फ़ंक्शन को नियोजित किया जा सकता है। यह सरणी के माध्यम से पुनरावर्ती रूप से पुनरावृत्त होता है, इसे CURL POST अनुरोधों के लिए उपयुक्त प्रारूप में परिवर्तित करता है। संशोधित सरणी को फिर $post को असाइन किया जा सकता है और त्रुटि से बचते हुए, cur_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