2012-02-20 2 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

질문에 적절한 언어 태그를 추가하십시오 ... –

+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

인용 부호가 잘못된 장소에있는 것 같습니다. 또한, ""직접 변수를 참조 할 수 있습니다 내 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

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

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 그들을 침묵 할 수 있어야한다.