2010-08-17 11 views
47

मुझे संदेह है कि यह स्वीकार्य नहीं है क्योंकि मुझे "पार्स त्रुटि: वाक्यविन्यास त्रुटि, अप्रत्याशित T_IF ..." त्रुटि मिल रही है। लेकिन मुझे अपना लक्ष्य पूरा करने का कोई रास्ता नहीं मिला।यदि गूंज कथन के अंदर ब्लॉक है?

<?php 

    $countries = $myaddress->get_countries(); 

    foreach($countries as $value){ 
    echo '<option value="'.$value.'"'.if($value=='United States') echo 'selected="selected"';.'>'.$value.'</option>'; 
    } 
    ?> 

क्या यह करता है यह एक का चयन तत्व में उन देशों की सूची प्रदर्शित करता है और डिफ़ॉल्ट के रूप में संयुक्त राज्य अमेरिका सेट है: यहाँ मेरी कोड है। मैं दुर्भाग्य से काम नहीं करता है ...

उत्तर

117

आप उपयोग करने के लिए एक ternary ऑपरेटर जो के रूप में कार्य करना होगा तो उसके छोटे IF/वरना बयान:

echo '<option value="'.$value.'" '.(($value=='United States')?'selected="selected"':"").'>'.$value.'</option>'; 
+0

+1। --- मुझे इससे हराएं। – sberry

+2

तो वह है जहां टर्नरी ऑपरेटर उपयोगी है। वह जल्दी था, बहुत बहुत धन्यवाद! – Joann

+0

इस तरह की स्थितियों में इसकी "मेरी वरीयता" नहीं है। मुझे डिफ़ॉल्ट/सेटिंग चर के लिए टर्नरी ऑपरेटर पसंद है। लेकिन यह वही है जो आपने पूछा है, आप यह कैसे करते हैं :) –

8

उपयोग एक ternary operator:

echo '<option value="'.$value.'"'.($value=='United States' ? 'selected="selected"' : '').'>'.$value.'</option>'; 

और जब आप इसमें हों, तो आप अपने कोड को और अधिक पठनीय/प्रबंधित करने के लिए printf का उपयोग कर सकते हैं:

printf('<option value="%s" %s>%s</option>', 
    $value, 
    $value == 'United States' ? 'selected="selected"' : '' 
    $value); 
8

आप हमेशा (<condition> ? <value if true> : <value if false>) वाक्यविन्यास का उपयोग कर सकते हैं (इसे ternary operator - कहा जाता है मुझे याद करने के लिए मार्क के लिए धन्यवाद :))।

यदि <condition> सत्य है, तो विवरण का मूल्यांकन <value if true> के रूप में किया जाएगा। यदि नहीं, तो यह रूप में <value if false>

उदाहरण के लिए मूल्यांकन किया जाना होगा:

$fourteen = 14; 
$twelve = 12; 
if($fourteen > 12) { 
    echo "Fourteen is more than twelve"; 
}else{ 
    echo "Fourteen is not more than twelve"; 
} 
+0

कॉलर टर्नरी ऑपरेटर। – sberry

+0

जैसा कि @ गंबो ने बताया, यह सिर्फ एक टर्नरी ऑपरेटर है, न कि "द"। "एक और आम शब्द सशर्त ऑपरेटर है।" – strager

6
कुछ

पठनीयता के कारण में यह होना चाहिए

तरह
<?php 
    $countries = $myaddress->get_countries(); 
    foreach($countries as $value) { 
    $selected =''; 
    if($value=='United States') $selected ='selected="selected"'; 
    echo '<option value="'.$value.'"'.$selected.'>'.$value.'</option>'; 
    } 
?> 
:

$fourteen = 14; 
$twelve = 12; 
echo "Fourteen is ".($fourteen > $twelve ? "more than" : "not more than")." twelve"; 

इस रूप में ही है

एक पंक्ति में सबकुछ खाने की इच्छा एक मृत, आदमी है। स्पष्ट रूप से लिखें।

लेकिन एक और तरीका है, एक बेहतर तरीका है। इको का उपयोग करने की कोई ज़रूरत नहीं है। टेम्पलेट्स का उपयोग करना सीखें। पहले अपना डेटा तैयार करें, और इसे केवल तब तैयार करें।

व्यापार तर्क हिस्सा:

$countries = $myaddress->get_countries(); 
$selected_country = 1;  

खाका हिस्सा:

<? foreach($countries as $row): ?> 
<option value="<?=$row['id']?>"<? if ($row['id']==$current_country):> "selected"><? endif ?> 
    <?=$row['name']?> 
</option> 
<? endforeach ?> 
संबंधित मुद्दे