2012-02-20 123 views
0

我想創建一個下拉列表使用數組上的foreach循環語句,除了代碼的選定部分無法正常工作。誰能解釋爲什麼?謝謝。foreach循環語句。如何預先選擇一個選項

$availabloptions = array("apparel"=>"Apparel", "gadgets"=>"Gadgets", "sports"=>"Sports", "travel"=>"Travel"); 

echo"<form>"; 
echo"<select name ='test'>"; 
foreach($availabloptions as $catvalue=>$catname){ 
echo"<option value='".$catvalue."'(".$catname." == ".$availabloptions["gadgets"].") ? selected ='selected':''>".$catname."</option>";} 
echo"</select>"; 
echo"</form>" 
+1

請將適當的語言標籤添加到您的問題... – 2012-02-20 23:31:53

+1

看看html的源代碼,所有將清晰。 – 2012-02-20 23:32:45

+0

看起來你在錯誤的地方有引號---你現在正在生成諸如「'? – 2012-02-20 23:39:01

回答

0

請勿過度使用回聲。這樣,您就可以從您的IDE檢查HTML語法的能力中受益,並且您將使代碼更具可讀性(=不易出錯)。

<?php 
$availabloptions = array("apparel" => "Apparel", "gadgets" => "Gadgets", "sports" => "Sports", "travel" => "Travel"); 
?> 
<form> 
<select name="test"> 
<?php foreach ($availabloptions as $catvalue => $catname) { ?> 
    <option value="<?=$catvalue?>"<?=$catname == $availabloptions["gadgets"] ? ' selected="selected"' : ''?>><?=$catname?></option> 
<?php } ?> 
</select> 
</form> 
+0

感謝您的建議。我會減少我的回聲使用 – Anonymous 2012-02-20 23:59:09

+0

也可以使用視圖內的短格式php標籤,如果你能幫助它。新版本的PHP將始終支持對簡表的支持。 – 2012-02-21 00:01:36

0

它看起來像你的報價標記是在錯誤的地方?此外,請記住,在PHP中,內部的「」你可以直接引用變量(但你不能(condition ? value1 : value2)內他們評估代碼;有發生引號):

echo "<option value='$catvalue'" . 
// the (condition ? "selected='selected'" : '') is part of 
// the code not of the string 
($catname == $availabloptions["gadgets"] ? " selected='selected'":"") . 
">$catname</option>"; 
+0

它的工作。我需要刷新我的PHP語法規則。謝謝。 – Anonymous 2012-02-20 23:56:17

1
<form> 
<select name ='test'> 
<? foreach($availabloptions as $catvalue => $catname){ ?> 
    <? $sel = ($catname == $availabloptions["gadgets"]) ? 'selected=selected' : ''; ?> 
    <option value='<?=$catvalue?>' <?=$sel?>><?=$catname?></option> 
    </select> 
    </form> 
<? } ?> 
+0

感謝您的反饋! – Anonymous 2012-02-20 23:58:31

0

我一直喜歡這種格式。

<?php 

$availabloptions = array(
    "apparel"=>"Apparel", 
    "gadgets"=>"Gadgets", 
    "sports"=>"Sports", 
    "travel"=>"Travel" 
); 

$selected=array(); 

$selected["gadgets"]=" selected"; 

?> 
<form> 
    <select name='test'> 
<? 
    foreach ($availableoptions as $key => $value) { 
     printf("\t<option value='%s'%s>%s</option>\n", $key, $selected[$key], $value); 
    } 
?> 
    </select> 
</form> 

如果你討厭的警告約$選擇[$關鍵]不存在,你應該能夠@printf而不是讓他們保持沉默。