में फ़ंक्शन कॉल का उपयोग करना फ़ोरैच लूप में फ़ंक्शन कॉल का उपयोग करने के लिए दक्षता के संबंध में कोई समस्या है। उदाहरण के लिए:फ़ोरैच लूप
foreach ($this->getValues() as $value) {
//Do something with $value
}
बनाम
$values = $this->getValues();
foreach ($values as $value) {
//Do something with $value
}
अनिवार्य रूप से, php काफी चालाक) केवल एक बार पहले उदाहरण में $ this-> getValues (कॉल करने के लिए है, या यह प्रत्येक यात्रा पर इसे कहते है। यह प्रत्येक यात्रा पर यह कहता है, तो यह कैसे जो तत्व अपने वर्तमान पर नज़र, रखता है
* सब कुछ * आप एक लूप के अंदर करते हैं दक्षता को कम कर देता है। – goat
ठीक है, दूसरे दृष्टिकोण के साथ एकमात्र नकारात्मक पक्ष यह है कि आपको एक अतिरिक्त चर (जो स्मृति लेता है) की आवश्यकता होती है। तो मैं पहले दृष्टिकोण के साथ जाना होगा। –
पियर्स, "अतिरिक्त चर" वास्तव में वहां नहीं है। PHP कॉपी-ऑन-राइट का उपयोग करता है जिसका अर्थ है कि '$ मान' और फ़ोरैच लूप उसी डेटासेट का संदर्भ देगा। विचार करने की एकमात्र चीज यह है कि जब परिवर्तनीय कचरा एकत्र किया जा सकता है, जो पहले दूसरे उदाहरण (लूप के अंत में) की तुलना में पहले होता है (फ़ंक्शन/फ़ाइल के अंत में या जब 'अनसेट() 'होता है बुलाया)। –