2010-06-10 8 views
7

मेरे पास निम्नलिखित लूप है। यह क्रमशः 0-6 फॉर्म सोमवार-रविवार के मानों का उपयोग करता है।निम्न लूप करने का एक और संघनित तरीका है?

क्या ऐसा करने के लिए एक और अधिक संघनित तरीका है? के रूप में if ($i=="day")

// $i = 0 is monday... $i = 6 is Sunday 
for($i=0;$i<7;$i++){ 

    if ($i==0) 
     echo ' <input name="repeat_on_week[]" type="checkbox" value="0" /> Monday'; 
    if ($i==1) 
     echo ' <input name="repeat_on_week[]" type="checkbox" value="1" /> Tuesday'; 
    if ($i==2) 
     echo ' <input name="repeat_on_week[]" type="checkbox" value="2" /> Wednesday'; 
    if ($i==3) 
     echo ' <input name="repeat_on_week[]" type="checkbox" value="3" /> Thursday'; 
    if ($i==4) 
     echo ' <input name="repeat_on_week[]" type="checkbox" value="4" /> Friday'; 
    if ($i==5) 
     echo ' <input name="repeat_on_week[]" type="checkbox" value="5" /> Saturday'; 
    if ($i==6) 
     echo ' <input name="repeat_on_week[]" type="checkbox" value="6" /> Sunday'; 

} 
+0

हालांकि इस सटीक प्रश्न पर लागू नहीं है, मैं धीरे-धीरे उपरोक्त कोड में विस्तार करना चाहता हूं; पहले 'अगर' के बाद, बाकी (अगर) '(या' एलिफ ', मैं एक php afficianado नहीं हो सकता) – KevinDTimm

उत्तर

16

कैसे के बारे में:

$days = array('Monday', 
       'Tuesday', 
       'Wednesday', 
       'Thursday', 
       'Friday', 
       'Saturday', 
       'Sunday' 
     ); 

for($i = 0; $i < 7; $i++) { 
    echo '<input name = "repeat_on_week[]" type = "checkbox" value = "' . $i . '" />' . $days[$i]; 
} 

या का उपयोग एक foreach; यह आंखों पर आसान है और आप सरणी की लंबाई यह पता लगाने की जरूरत नहीं है: "वहाँ यह करने के लिए एक बेहतर तरीका हो गया है"

for($days as $i => $day) { 
    echo "<input name = \"repeat_on_week[]\" type = \"checkbox\" value = \"$i\" /> $day"; 
} 

यह एक अच्छा संकेत है कि आप सोचा है। इसका मतलब है कि आप सही दिशा में * पर जा रहे हैं। लेकिन मैं सरणी की अवधारणाओं पर ब्रश करने का सुझाव देता हूं और जब उनका उपयोग करना अच्छा होता है।

* एक अच्छा प्रोग्रामर हमेशा अपने या अपने कोड बेकार सोचता है, जो कह रही है कि एक अच्छा प्रोग्रामर हमेशा खुद को या खुद को बेहतर बनाने के लिए है, जो भी है कि a good programmer is humble कहने का एक और तरीका है कोशिश कर रहा है का एक और तरीका है।

+2

+1। ख़ूब कहा है। –

0

या तो एक स्विच बयान या तार सीधे साथ एक सरणी का उपयोग बाहर सूचीबद्ध करने का विरोध किया।

+0

"arty" क्या हो सकता है? – Nathan

+0

क्षमा करें, सरणी ... ऑटो सुधार ने मुझे बेवकूफ बना दिया :-) – Eiko

0

आपका कोड केवल एक बार, प्रत्येक पंक्ति को मुद्रित करने जा रहा है। ऐसा लगता है कि आपको बिल्कुल एक लूप की आवश्यकता नहीं है।

+0

ठीक है, उस लूप में अन्य कोड है जिसके लिए इसकी आवश्यकता है (तुलनात्मक उद्देश्यों के लिए, मैंने कोड को पढ़ने में आसान रखने के लिए इसे छोड़ दिया)। – kylex

+1

वाह कि कुछ मीठा कोड है। – Nathan

+0

@kylex, आह, बहुत अच्छी तरह से। एक सरणी कार्य का उपयोग कर उत्तर में से कोई भी जवाब। अंत में आपकी टिप्पणी के लिए – Pops

3

सबसे पहले जिस तरह से:

$days = array("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"); 

for ($i=0; $i < 7; $i++) { 
    echo ' <input name="repeat_on_week[]" type="checkbox" value="'.$i.'" /> '.$days[$i]; 
} 

दूसरा तरीका "तिथि" समारोह का उपयोग करने के सिस्टम से काम करने के दिन के नाम प्राप्त करने के लिए होगा, लेकिन मैं भी है कि गणना यह पता लगाने की आलसी हूँ ... आप ' देना चाहूंगी यह timestamps में जाना जाता है काम करने के दिन से मेल खाते हैं, और फिर कर

date("l", $timestamp); 
4
$days = array(
    "Monday", 
    "Tuesday", 
    "Wednesday", 
    "Thursday", 
    "Friday", 
    "Saturday", 
    "Sunday"); 

for($i=0; $i<7; $i++){ 
    echo ' <input name="repeat_on_week[]" type="checkbox" value="' . $i . '" /> ' . $days[$i]; 
} 
1

आह, everone इस जल्दी से मिल गया है, लेकिन मैं एक foreach पाश पसंद करेंगे:

$days = array('Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'); 
foreach ($days as $i => $day) { 
     echo " <input name=\"repeat_on_week[]\" type=\"checkbox\" value=\"$i\" /> $day"; 
} 
+0

क्या फोरच ओवर का उपयोग करने का कोई तकनीकी कारण है? (क्या यह तेज़ है?) – kylex

+0

यह सिर्फ वाक्य रचनात्मक चीनी है और यह आसान है। –

+0

हाँ, मुझे नहीं लगता कि कोई प्रदर्शन समस्या है।"तेज़" के बारे में चिंता न करें, "इससे 6 महीने बाद पढ़ने के लिए आसान" चिंता करें। – Nathan

1

अच्छा ... 4 साल बाद, लेकिन फिर भी मैंने एक समाधान भी साझा करने का फैसला किया :) कृपया, देखें।

for ($i = 0; $i < 7; $i++) { 
    echo '<input name = "repeat_on_week[]" type = "checkbox" value = "' . $i . '" />' . date('l', strtotime('Monday +' . $i . 'days')); 
} 

आशा है कि यह किसी की सहायता करे।

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