2014-03-19 5 views
1

선택 양식과 관련하여 질문이 있습니다. 나는 데이터베이스에서 추출 된 문자열을 포함하는 변수를 가지고 있으며, 먼저 select 양식을 우선 순위로 지정하고 select 양식의 맨 위에 놓기를 원합니다. 변수 $ smode는 "페이드"이 때선택 옵션을 상단 옵션으로 지정

$smode = "fade"; 
<select name='smode'> 
     <?php 
     $modes = array('horizontal', 'vertical', 'fade'); 
     $i = 0; 
     while($i < 3){ 
      echo "<option value='$modes[$i]'>$modes[$i]</option>"; 
      $i++; 
     } 
      ?> 
    </select> 

그래서, 나는 변수 $ smode는 "수직"난에 수직 옵션 필드를 원하는 것입니다 선택 양식의 상단에 페이드 옵션 필드를 원하는 상단 등.

누군가 나를 도울 수 있기를 바랍니다. 감사.

+0

문이 선택 = 경우에 THR 추가는 –

+0

어떻게 하나를 선택해야하는 알고 '선택'? 또한 일반적으로 선택 옵션의 순서를 변경해도 좋은 UX는 만들 수 없습니다. – David

답변

2

트릭을해야합니다. 출력을 변수로 저장하십시오. 상단에 하나를 정의하고 나머지에는 하나를 정의하십시오. 루프가 끝나면 echo를 사용하여 원하는 순서대로 출력하면됩니다.

$smode = "fade"; 
<select name='smode'> 
    <?php 
    $modes = array('horizontal', 'vertical', 'fade'); 
    $i = 0; 
    $options = ''; 
    $topOption= ''; 
    while($i < 3){ 
     if($modes[$i] == $smode) { 
     $topOption = "<option value='$modes[$i]' selected='selected'>$modes[$i]</option>" 
     } else { 
     $options .= "<option value='$modes[$i]'>$modes[$i]</option>"; 
     } 
     $i++; 
    } 
    echo $topOption . $options; 
?> 
</select> 

또한 for 루프를 읽으십시오.

$smode = "fade"; 
<select name='smode'> 
    <?php 
    $modes = array('horizontal', 'vertical', 'fade'); 
    $options = ''; 
    $topOption= ''; 
    for($i =0; $i < 3;$i++){ 
     if($modes[$i] == $smode) { 
     $topOption = "<option value='$modes[$i]' selected='selected'>$modes[$i]</option>" 
     } else { 
     $options .= "<option value='$modes[$i]'>$modes[$i]</option>"; 
     } 
    } 
    echo $topOption . $options; 
?> 
</select> 

심지어 고려 foreach :

$smode = "fade"; 
<select name='smode'> 
    <?php 
    $modes = array('horizontal', 'vertical', 'fade'); 
    $options = ''; 
    $topOption= ''; 
    foreach($modes as $modeItem){ 
     if($modeItem == $smode) { 
     $topOption = "<option value='$modeItem' selected='selected'>$modeItem</option>" 
     } else { 
     $options .= "<option value='$modeItem'>$modeItem</option>"; 
     } 
    } 
    echo $topOption . $options; 
?> 
</select> 
+1

if ($ modes [$ i] == 'fade') {'를 {if ($ modes [$ i] == $ smode)'{' – martincarlin87

+1

@ martincarlin87 사실로 변경합니다. 끝난! –

0

이 또한

$smode = "vertical"; 

function cmp($a, $b) { 
    global $smode; 
    if ($b == $smode) { 
     return 1; 
    } 
    return 0; 
} 


$modes = array('horizontal', 'vertical', 'fade'); 
usort($modes, 'cmp'); 

print_r($modes); 
0

간단한 배열에서 기본 항목을 제거 (테스트하지 않았습니다, 작동합니다) 해결책이 될 것입니다, 나머지를 추가하는 것보다 첫째로 더하기

$smode = "fade"; 
echo "<select name='smode'>"; 

$modes = array('horizontal', 'vertical', 'fade'); 

//remove the primary item 
$fixedmodes=array_diff($modes, array($smode)); 
//add the primary select option 
echo "<option value='$smode'>$smode</option>"; 
//add the rest 
foreach ($fixedmodes as $val) { 
    echo "<option value='$val'>$val</option>"; 
} 
echo "</select>"; 
0

이 질문은 배열 조작에 관한 것입니다.

$smode = "fade";  
$modes = array('horizontal', 'vertical', 'fade'); 
//remove the smode term from the array 
$modes = array_diff($modes, array($smode)); 
// ... and add it to the beginning 
array_unshift($modes, $smode); 

근무 예 : 당신은 단순히 다음과 같은 작업을 수행 할 수 https://eval.in/123063

0

:

$modes = array('horizontal', 'vertical', 'fade'); 

$modes = array_diff($modes, array($smode));// create a new array without the top option 

array_unshift($modes, $smode);//add the option to first position 

//carry on... 
관련 문제