2011-06-10 37 views
5

鑑於當我從下拉框中[S,M,L]選擇一個值,並點擊提交,我得到以下輸出之一下面的代碼:添加額外的功能到PHP形式

S is equal to 
M is equal to 
L is equal to 

我會像輸出沿線

S is equal to Small 
M is equal to Medium 
L is equal to Large 

有東西可以添加到我的代碼來完成此?或者我需要採取不同的方法?

<form action="?" method="post"> 

<?php 
$size = array(); 
$size[] = ""; 
$size[] = "S"; 
$size[] = "M"; 
$size[] = "L"; 
if(isset($_REQUEST['list'])){ 

    echo $size[(int)$_REQUEST['list']]." is equal to "."<br />"; 

} 

echo '<select name="list">'."\n"; 
$count = 0; 

foreach($size as $size){ 
    echo '<option value="'.$count.'">'.$size.'</option>'."\n"; 

    $count++; 
} 
echo '</select>'; 
?> 

<input type="submit" value="submit" /> 
</form> 


<form action="?" method="post"> 
+0

@everyone,所有的選項感謝和快速反應 – enfield 2011-06-10 20:32:12

回答

1

有了這個解決方案可以重用原來的靜態數組來填充後的回聲。還要儘量避免在HTML中使用\ n,而應使用語義<br>

<form action="?" method="post"> 

<?php 
$size = array(""=>"","Small"=>"S","Medium"=>"M","Large"=>"L"); 

if(isset($_REQUEST['list'])){ 

    echo $size[$_REQUEST['list']]." is equal to ".$_REQUEST['list']."<br />"; 

} 

echo "<select name='list'>"; 

foreach($size as $key=>$value){ 
    echo "<option value='$key'>$value</option>"; 

} 
echo '</select>'; 
?> 

<input type="submit" value="submit" /> 
</form> 
+0

這是我一直在尋找,感謝您的幫助。 – enfield 2011-06-10 20:31:36

+0

@enfield沒有問題如果你不介意你在php中編碼了多久,那麼快速的問題? – 2011-06-10 20:35:38

3

爲什麼不使用關聯數組,然後你不必亂用int或$count s?

<form action="?" method="post"> 

    <?php 
    $sizes = array(
     "S" => "Small", 
     "M" => "Medium", 
     "L" => "Large" 
    ); 

    if(isset($_REQUEST['list'])){ 
     echo "<p>" . $_REQUEST['list'] . " is equal to " . $sizes[$_REQUEST['list']] . "</p>"; 
    } 
    ?> 

    <select name="list"> 
    <option value="">Choose one</option> 
    <?php 
     foreach($sizes as $key => $val){ 
     echo "<option value='$key'>$key - $val</option>\n"; 
     } 
    ?> 
    </select> 

    <input type="submit" value="submit" /> 
</form> 

輸出會是這個樣子:

S is equal to Small 

+------------+-+ 
| Choose one |▼| 
+------------+-+ 
| S - Small | 
| M - Medium | 
| L - Large | 
+--------------+ 
+0

+1的真棒ASCII原型! – Artefact2 2011-06-10 20:23:28

+0

謝謝! :) .... – 2011-06-10 21:02:00

0

林不知道我明白你的問題吧

但是,爲什麼不將值設置爲小,中&大而如果你想保持輸出S,M,L的話。

然後S =小。

1

您需要製作數組$ size,然後foreach($ sizes as $ size)作爲循環。然後在迴音,你需要這樣的:

if(isset($_REQUEST['list'])){ 
switch($size[$_REQUEST['list']]) 
{ 
    case "S": 
    $size = "Small"; 
    break; 
    case "M": 
    $size = "Medium"; 
    break; 
    case "L": 
    $size = "Large"; 
    break; 
} 
    echo $size[(int)$_REQUEST['list']] . " is equal to " . " . $size . "<br />"; 

} 

但實際上你會好得多使用字母作爲數組鍵,以及大小的值:$尺寸[「S」] =「小」,那麼這將是簡單地在循環

foreach ($sizes as $key => $size) 
{ 
echo "<option value='" . $key . "'>" . $size . "</option>"; 
} 

,並顯示:

$_REQUEST['list'] . " is equal to " . " . $sizes['$_REQUEST['list']] . "<br />"; 
1

你可以從重寫使用嵌套的數組代碼爲您大小的數組像你期望的結果:

$size = array(); 
$size[] = ""; 
$size[] = array("S", "Small"); 
$size[] = array("M", "Medium"); 
$size[] = array("L", "Large"); 
if(isset($_REQUEST['list'])){ 

    echo $size[(int)$_REQUEST['list']][0]." is equal to ". $size[(int)$_REQUEST['list']][1] ."<br />"; 

} 

echo '<select name="list">'."\n"; 
$count = 0; 

foreach($size as $size){ 
    echo '<option value="'.$count.'">'.$size[0].'</option>'."\n"; 

    $count++; 
} 
echo '</select>'; 
?> 

<input type="submit" value="submit" /> 
</form> 
相關問題