2009-12-12 6 views
19

निम्न कोड में:फ़ोरैच लूप में फ़ंक्शन का उपयोग करने से परिणाम कैश होता है, या हर बार फ़ंक्शन को कॉल करता है?

function a(){ 
    echo 'a'; 
    return array(1,2,3,4); 
} 

foreach(a() as $t){ 
    echo $t;  
} 

हम देख सकते हैं एक() केवल एक बार कहा जाता है, और यह मान कैश किया गया है लगता है ...
लेकिन तब मैं this debate (see comments on the question) को देखने के लिए मैं कुछ याद आ रही है मिल गया?

+0

इसे बदलने के लिए '$ ($ a = 0; $ a <= count (a()); $ a ++)' और देखें कि आपको क्या मिलता है :) –

उत्तर

24

नहीं, आपका परीक्षण निर्णायक है।

किसी भी एक से अधिक अभिव्यक्तियों का मूल्यांकन करने के लिए इसका कोई अर्थ नहीं है। यह एक foreach पाश का मूल आधार है।

for लूप में तीन तर्क हैं, और यह प्रत्येक और तीसरे पुनरावृत्ति का मूल्यांकन करता है।

संबंधित मुद्दे

 संबंधित मुद्दे