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
4

4 に答える 4

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]]," ";    
}  

配列を出力するには、echo の代わりに print_r() を使用します。

print_r($_GET["colors"]);
于 2012-07-11T06:03:51.733 に答える
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.",";
  }
?>
于 2012-07-11T06:03:32.290 に答える
1

なぜ$colorsのような変数を使用しているのですか$_GET[$colors[0]]。これは変数ではなく文字列です。このような使用の代わりに:

$_GET['colors'][0]
于 2012-07-11T06:07:57.627 に答える
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]," ";
                }
            }
        ?>
于 2012-07-11T06:03:54.160 に答える