मैं आज एक समस्या में भाग गया जहां मैं http_build_query()
पर एक खाली सरणी के मान सेट के साथ एक कुंजी पास कर रहा था। उदा .:http_build_query कुंजी को अनदेखा करता है यदि मान एक खाली सरणी है। यह एक बग कैसे नहीं है?
$args = array("foo", "bar", array(), "baz");
$qs = http_build_query($args);
echo $qs; // outputs 0=foo&1=bar&3=baz, I expected 0=foo&1=bar&2=&3=baz
यह मेरे लिए एक समस्या प्रस्तुत करता है, के बाद से मैं HTTP पर एक आंतरिक एपीआई के लिए कुछ डेटा गुजर रही हूं और मैं दूसरी तरफ सभी तर्कों बाहर निकलने के लिए की जरूरत है।
ठीक है, मैंने इसे गुगल किया और निम्न बग रिपोर्ट के साथ आया: http://bugs.php.net/bug.php?id=50407। व्यवस्थापक से terse उत्तर है, "सेटिंग को खाली करने के समान नहीं है। कोई बग नहीं।"
क्या कोई मुझे समझा सकता है कि यह एक बग क्यों नहीं है? क्या किसी के पास कामकाज के लिए कोई विचार है, एक तरफ मनमानी मूल्य निर्धारित करने के लिए लंगड़ा हैक से और उस मूल्य को दूसरे पर खाली मूल्य के रूप में व्याख्या करना?
$args = array("foo", "bar", array(), "baz");
$qs = http_build_query($args);
parse_str($qs, $query);
echo ($args == $query); // false, I expect it to be true
मुझे लगता है कि शायद यह एक दूसरे के parse_str()
और http_build_query()
प्रतिलोम होने के लिए विचार करने के लिए मुझे के अनुभवहीन है:
संपादित
यहाँ क्यों मुझे लगता है कि यह एक बग है।
मैं अपने वर्तमान "लंगड़ा हैक" समाधान को नीचे दिए गए उत्तर के रूप में पोस्ट कर रहा हूं।
तो, क्या आप यह कहने जा रहे हैं कि आपका एपीआई बिना किसी सत्यापन के HTTP के माध्यम से डेटा पर भरोसा करेगा? दिलचस्प लगता है ... –
ऐसा नहीं लगता है कि वह एपीआई के अंदर डेटा के साथ क्या होगा, उससे संबंधित कुछ भी कह रहा है। – Johrn
@ कोल। Shrapnel: यह काफी कूद है। वह बस एक खाली मूल्य के साथ एक चर पारित करने में सक्षम होना चाहता है। – webbiedave