2012-07-11 53 views
2
<!DOCTYPE html> 
<html> 
    <head> 
     <title>My Form</title> 
     <meta charset="UTF-8" /> 
    </head> 
    <body> 
     <form method="get"> 
      <div>Name 
       <input name="name" size="15" type="text" /> 
      </div> 
      <select multiple="yes" name="colors[]"> 
       <option> 1 </option> 
       <option> 2 </option> 
       <option> 3 </option> 
       <option> 4 </option> 
       <option> 5 </option> 
      </select> 
     </form> 
     <?php 
      $number=10; 
      echo "hello"; 
      if (isset($_GET["name"])){ 
       echo " ".$_GET["name"]; 
       echo "<br />"; 
      } 
      echo count($_GET["colors"]), " ", $_GET["colors"], "<br />"; 
      echo $_GET[$colors[0]]," is your first color."; 
      if(isset($_GET["$colors"])){ 
       echo "You must like "; 
       for($colornum=0;$colornum<count($_GET["$colors"]);$colornum++){ 
        echo $_GET[$colors[$colornum]]," "; 
       } 
      } 
     ?> 
    </body> 
</html> 

爲什麼不能正常工作?選擇倍數不會在數組中輸出,或者可能是 有很多調試的東西,這些東西無助於我的理解。我得到未定義的索引和變量錯誤。這裏是選擇選項1-3後,我的輸出:多選到陣列

Name 
hello jimbo1qaz 
3 Array 

Notice: Undefined variable: colors in E:\xampp\htdocs\myform.php on line 28 

Notice: Undefined index: in E:\xampp\htdocs\myform.php on line 28 is your first color. 
Notice: Undefined variable: colors in E:\xampp\htdocs\myform.php on line 29 
+0

你做了什麼,scessor? – jimbo1qaz 2012-07-11 05:59:16

+1

如果您點擊我的名字上方的「x分鐘前」,您可以看到更改(我更改了輸出的設計)。 – scessor 2012-07-11 06:01:25

回答

2

試試這個,

<form method="POST"> 
    <select multiple="yes" name="colors[]"> 
     <option value="1"> 1 </option> 
     <option value="2"> 2 </option> 
     <option value="3"> 3 </option> 
     <option value="4"> 4 </option> 
     <option value="5"> 5 </option> 
    </select> 
</form> 
<?php 
    $selected_colors = $_POST['colors']; 
    foreach($selected_colors AS $key=>$values) 
    { 
    echo $values.","; 
    } 
?> 
3
//this should be $_GET['colors'][0] 
echo $_GET[$colors[0]]," is your first color."; 

//the , is wrong, you need to use . (point) 
echo $_GET[$colors[0]]," is your first color."; 

//Delete the $ 
if(isset($_GET["$colors"])){ 

//it's $_GET['colors'] 
for($colornum=0; $colornum<count($_GET["$colors"]); $colornum++){  
    //Here you need to use $_GET['colors'][$colornum] 
    echo $_GET[$colors[$colornum]]," ";  
} 

要輸出的陣列中使用的print_r(),而不是回聲:

print_r($_GET["colors"]); 
1

的$ _GET在這一點上以數組的形式出現,並且您沒有正確引用該鍵,它是一個字符串而不是變量,見下面

<?php 
      $number=10; 
      echo "hello"; 
      if (isset($_GET["name"])){ 
       echo " ".$_GET["name"]; 
       echo "<br />"; 
      } 
      echo count($_GET["colors"]), " ", $_GET["colors"], "<br />"; 
      echo $_GET["colors"][0]," is your first color."; 
      if(isset($_GET["colors"])){ 
       echo "You must like "; 
       for($colornum=0;$colornum<count($_GET["colors"]);$colornum++){ 
        echo $_GET["colors"][$colornum]," "; 
       } 
      } 
     ?> 
1

你爲什麼要使用$colors變量像$_GET[$colors[0]]。這是字符串不是變量。而不是像這樣使用:

$_GET['colors'][0]