2012-02-20 14 views
0

配列の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

あなたの質問に適切な言語タグを追加してください... –

+1

htmlのソースを調べると、すべてが明らかになります。 –

+0

間違った場所に引用符があるようです。現在、 ' '? –

答えて

0

エコーを酷使しないでください。そうすれば、HTMLの構文をチェックするIDEの機能が役立ち、コードをより読みやすくなります(エラーが発生しにくくなります)。

<?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

+0

あなたがそれを助けることができる場合は、ビューの中に短い形式のPHPタグを使用してください。ショートフォームのサポートは、新しいバージョンのPHPで常にサポートされます。 –

0

引用符が間違っているようですね。

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

1
:;また、「」あなたは直接の変数を参照することができます(つまり、 外引用符を発生する持っていますが、 は、 (condition ? value1 : value2)、それら内のコードを評価することはできません)の中に、PHPであることを覚えています
<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

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でそれらを黙らせることができるはずです。

関連する問題