मेरा लक्ष्य किसी जटिल तर्क को if() कथन में रखना है। आइए मान लें कि मेरे पास मूल्यों की एक सरणी है और यदि मैं अपने सरणी में सब कुछ nonzero है तो मैं थोड़ा कोड निष्पादित करने जा रहा हूं। आम तौर पर, मैं कह सकता हूं, $valid = true
, foreach
मेरी सरणी, और शून्य मिलने पर $valid = false
सेट करें। तो मैं अपना कोड if ($valid)
चलाऊंगा। वैकल्पिक रूप से, मैं अपने लूप को एक फ़ंक्शन में डाल सकता हूं और फ़ंक्शन को अपने if()
पर रख सकता हूं।आईएफ स्टेटमेंट में PHP बंद होने पर क्या रोकता है?
लेकिन मैं आलसी हूं, इसलिए मैं "मान्य" झंडे के समूह के साथ नहीं बल्कि मैं एक नया नया फ़ंक्शन लिखना चाहता हूं जिसका उपयोग केवल एक ही स्थान पर किया जा रहा है।
if ($q = function() { return 'foo'; }) {
echo $q;
}
else {
echo 'false';
}
मैं उम्मीद कर रहा था कि if
जो सही का आकलन हो जाता है 'foo'
,:
तो मान लें कि मैं इस किया है। मेरा बंद $q
पर प्रतिबद्ध है और कथन निष्पादित करता है। $q
स्ट्रिंग foo
लौटाता है, और 'foo' मुद्रित होता है।
इसके बजाय, मुझे त्रुटि Object of class Closure could not be converted to string
मिलती है।
तो चलो इस के बजाय की कोशिश करते हैं:
if (function() { return false; }) {
echo 'foo';
}
else {
echo 'true';
}
मैं उम्मीद कर रहा था कि मेरे समारोह वापसी होगी झूठे और 'सही' मुद्रित किया जाएगा। इसके बजाय, 'foo' मुद्रित है।
इस बारे में गलत क्या है कि मैं इस बारे में जा रहा हूं? ऐसा लगता है कि यह कह रहा है, "हाँ, यह सुनिश्चित है कि एक समारोह है!" "नहीं, क्योंकि फ़ंक्शन का मूल्यांकन गलत है।" क्या ऐसा करने का कोई तरीका है जिसे मैं करने की कोशिश कर रहा हूं?
आप उनकी वापसी मान के साथ काम करता है भ्रमित करने के लिए लग रहे हैं निर्भर करता है। – delnan
मुझे लगता है कि मैं जो चाहता था वह 'अगर (फ़ंक्शन() {वापसी झूठी;}()) {' जो जावास्क्रिप्ट में स्पष्ट रूप से मान्य है लेकिन PHP नहीं है। – ajp5103
http://stackoverflow.com/questions/3568410/anonymous-functions-that-execute-immediately call_user_func() वह है जिसे मैं ढूंढ रहा था। – ajp5103