समस्या यहाँ आपके if कथन में है:
end(array_keys($params['territories']))
आप array_keys()
. का आउटपुट पास नहीं कर सकते संदर्भ द्वारा, इसलिए आपको इसे संदर्भ द्वारा पास करने में सक्षम होने के लिए पहले इसे एक चर के लिए असाइन करना होगा। इस तरह:
$a = array_keys($params['territories']);
if ($key == end($a)) {
आपको ऐसा क्यों करना है?
क्योंकि end()
सरणी के आंतरिक सूचक को अंतिम तत्व पर सेट करता है, इसलिए यह संदर्भ द्वारा करता है (आप यह भी देखेंगे कि आपको अंत का वापसी मान निर्दिष्ट करने की आवश्यकता नहीं है, क्योंकि यह सब संदर्भ द्वारा किया जाता है)। तो आप array_keys()
. का रिटर्न वैल्यू पास नहीं कर सकते संदर्भ द्वारा, क्योंकि आप केवल निम्नलिखित को संदर्भ द्वारा पारित कर सकते हैं:
- चर, यानी foo($a)
- नए बयान, यानी foo(new foobar())
- संदर्भ फ़ंक्शन से लौटाए गए, यानी:
आप मैनुअल में संदर्भ से गुजरने के बारे में अधिक पढ़ सकते हैं:http://php .net/manual/hi/language.references.pass.php