Есть два скрипта 1.php и 2.php, выложены ниже, думаю всем понятно, но на всякий случай поясню: 1php в зависимости от значения переменной задаёт значение второй переменной, подключает 2.php, который в свою очередь отображает поле select с месяцем в зависимости от значения второй переменной, всё работает верно, кроме августа и сентября, т.е если в 1.php $month задать как 08 или 09, то 2.php выдаст значение месяц, в чём может быть проблема? На всякий случай поясню, в написании переменных ошибок нет, многократно проверил и переписал эти два месяца 1.php Код (PHP): <?php $month="08"; switch ($month) { case 01: $month01="selected"; break; case 02: $month02="selected"; break; case 03: $month03="selected"; break; case 04: $month04="selected"; break; case 05: $month05="selected"; break; case 06: $month06="selected"; break; case 07: $month07="selected"; break; case 08: $month08="selected"; break; case 09: $month09="selected"; break; case 10: $month10="selected"; break; case 11: $month11="selected"; break; case 12: $month12="selected"; break; } include "2.php"; ?> 2.php Код (PHP): <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>месяц</title> </head> <body> <select name="month"> <option value="00">месяц</option> <option <?php echo "$month01"; ?> value="01">январь</option> <option <?php echo "$month02"; ?> value="02">февраль</option> <option <?php echo "$month03"; ?> value="03">март</option> <option <?php echo "$month04"; ?> value="04">апрель</option> <option <?php echo "$month05"; ?> value="05">май</option> <option <?php echo "$month06"; ?> value="06">июнь</option> <option <?php echo "$month07"; ?> value="07">июль</option> <option <?php echo "$month08"; ?> value="08">август</option> <option <?php echo "$month09"; ?> value="09">сентябрь</option> <option <?php echo "$month10"; ?> value="10">октябрь</option> <option <?php echo "$month11"; ?> value="11">ноябрь</option> <option <?php echo "$month12"; ?> value="12">декабрь</option> </select> </body> </html>
в нулях. когда они записаны как 09 это восьмеричная с/с, а когда "09" это строка "ноль-девять". вот и думайте. ну и как бы более красивое решение как минимум такое: ${'month'.$month} = 'selected';
Спасибо, теперь всё работает, а на счёт ${'month'.$month}= 'selected;' не понял, как это должно работать?
чтоб понять - надо мануалы читать. ${} смешная конструкция внутри которой вычисляется "полное имя переменной". например для встройки в строку (которая с двойными кавычками) значений из массивов. в данном случае "полное имя переменной" будет равно результату конкатенации строки month со значением переменной $month. у вас в коде явно указанное значение - строка 08. то есть на "выходе" будет строка month08 и следовательно будет искаться переменная $month08. ей-то и присвоится значение 'selected', которое потом подставится в опшн. успехов.