"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > `array_shift()` क्यों ट्रिगर करता है "सख्त मानक: केवल वेरिएबल्स को संदर्भ द्वारा पारित किया जाना चाहिए"?

`array_shift()` क्यों ट्रिगर करता है "सख्त मानक: केवल वेरिएबल्स को संदर्भ द्वारा पारित किया जाना चाहिए"?

2024-12-21 को प्रकाशित
ब्राउज़ करें:833

Why Does `array_shift()` Trigger

त्रुटि संदेश "सख्त मानक: केवल चर को संदर्भ द्वारा पारित किया जाना चाहिए"

array_shift() का उपयोग करते समय, यह सख्त मानकों की रिपोर्ट कर सकता है चेतावनी यदि पारित तर्क फ़ंक्शन कॉल का परिणाम है। यह व्यवहार असंगत प्रतीत होता है, क्योंकि यह हमेशा चेतावनी को ट्रिगर नहीं करता है।

निम्नलिखित कोड पर विचार करें:

$el = array_shift($instance->find(..))

इस उदाहरण में, चेतावनी बढ़ा दी गई है क्योंकि खोज() विधि एक चर नहीं है। हालाँकि, निम्नलिखित कोड कोई चेतावनी नहीं देता है:

function get_arr(){
    return array(1, 2);
}
$el = array_shift(get_arr());

इस व्यवहार को समझने के लिए, आइए एक अलग कोड स्निपेट का विश्लेषण करें:

error_reporting(E_STRICT);
class test {
    function test_arr(&$a) {
        var_dump($a);
    }
    function get_arr() {
        return array(1, 2);
    }
}

$t = new test;
$t->test_arr($t->get_arr());

यह कोड एक सख्त मानक चेतावनी उत्पन्न करता है क्योंकि $t->get_arr() विधि एक चर नहीं है और संदर्भ द्वारा पारित की जा रही है। यह व्यवहार प्रतिकूल है क्योंकि विधि एक सरणी मान लौटाती है।

सख्त मोड में इस त्रुटि से बचने के लिए, या तो संदर्भ का उपयोग करने से बचने के लिए विधि हस्ताक्षर बदलें या एक मध्यवर्ती चर का उपयोग करें:

function test_arr($a) {
    var_dump($a);
}

$inter = get_arr();
$el = array_shift($inter);
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3