2015-12-13 9 views
11

यह उदाहरण पर for लूप लिखने के लिए एक वैकल्पिक उदाहरण (उदाहरण 4 सटीक होना) के रूप में दिया गया है।

for ($i = 1, $j = 0; $i <= 10; $j += $i, print $i, $i++); 

मैं for छोरों को समझते हैं, मैं तो बस समझ में नहीं आता क्यों चर, $j, कि संख्या 1 के लिए 10

FYI करें प्रिंट पाश के लिए एक लेखन के इस संस्करण में घोषित किया जाता है: निकाल रहा है लूप के लिए परिवर्तनीय परिणाम के लिए बिल्कुल कोई फर्क नहीं पड़ता है।

+1

बहुत अच्छा सवाल है। वह '$ j = 0' केवल एक बार मूल्यांकन किया जाएगा और फिर '$ j + = $ i' के लिए है ... क्या? – JakeGould

+0

ऐसा लगता है कि 'j'' i' के बराबर कुछ भी कर रहा है ... o.O – Andrew

+0

वैसे ऐसा लगता है कि प्रलेखन ने भाषा के समान शैली को अपनाया है। फूला हुआ और गॉथस से भरा हुआ। – Richard

उत्तर

4

मुझे लगता है कि यह सिर्फ यहाँ है कि के लिए तथ्य यह है कि आप अल्पविराम से बयान उपयोग कर सकते हैं उदाहरण देकर स्पष्ट करना।
यह यहाँ बेकार है, लेकिन के लिए वाक्य रचना का एक उदाहरण दिखाने:

[...] भाव से प्रत्येक खाली हो या कॉमा से अलग कई भाव हो सकते हैं। Expr2 में, अल्पविराम से अलग सभी अभिव्यक्तियों का मूल्यांकन किया जाता है लेकिन परिणाम अंतिम भाग से लिया जाता है। [...]

3

हालांकि यह इस उदाहरण में आवश्यक नहीं लगता है। ऐसा लगता है कि $j पुनरावृत्तियों की योग भंडारण किया जाता है:

1+2+3+4+5+6+7+8+9+10 = 55 

कौन सा कुछ स्थितियों में उपयोगी हो सकता है। तो इसका मतलब यह होगा कि लूपिंग की यह शैली प्रत्येक पुनरावृत्ति पर कई संचालन करने के बराबर है, जैसे सारांश, औसत, सबसे बड़ा मूल्य इत्यादि। उदाहरण का बिंदु यह है कि आप अल्पविराम से अलग कई बयान लागू कर सकते हैं।

2

स्पष्टीकरण

for ($i = 1, $j = 0; $i <= 10; $j += $i, print $i, $i++); 

छोरों के लिए तीन भाग अर्धविराम द्वारा अलग ले जाता है (;)।

  1. प्रारंभ
  2. तुलना करें और परीक्षण
  3. वृद्धि या decrements।

    • यहां $ i = 1, $ j = 0 प्रारंभिकरण है।
    • $ i < = 10; तुलना और परीक्षण
    • $ j + = $ मैं, प्रिंट $ मैं, है $ i ++ वेतन वृद्धि या decrements हिस्सा
अपने वेतन वृद्धि में

अब है या decrements हिस्सा आप तीन कार्य किया है।
1. 1

अपने कार्यक्रम $ जे में

तो पिछले $ i 2. प्रिंट $ i 3. वेतन वृद्धि $ i के साथ वेतन वृद्धि $ j है उपयोगी नहीं है। क्योंकि यह का हिस्सा नहीं ले रहा है या तो प्रिंट या तुलना करें और परीक्षण करें।

तो पाश बस बहुत सरल है अगर आप हर जगह से $ जे हटाने और

for ($i = 1; $i <= 10; $i++){ 
    print $i; 
} 

के रूप में यह लिखना लेकिन उस $ जे चर पाश जहां से आप इस कोड को ले लिया है के बाद इस्तेमाल किया जा सकता ब्लॉक।

तरह

for ($i = 1, $j = 0; $i <= 10; $j += $i, print $i, $i++); 
print $j; 
संबंधित मुद्दे