Multi-select to Array

<!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 

     //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"]); 

    Попробуй это,

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

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

    Почему вы используете переменную $colors такую ​​как $_GET[$colors[0]] . Это строка не переменная. Вместо этого используйте вот так:

     $_GET['colors'][0]