| |
|
|
| | Есть код
$mes = date("m");
if ($mes == 01) $mes = "января";
echo "<br> 01 $mes";
if ($mes == 02) $mes = "февраля";
echo "<br> 02 $mes";
if ($mes == 03) $mes = "марта";
echo "<br> 03 $mes";
if ($mes == 04) $mes = "апреля";
echo "<br> 04 $mes";
if ($mes == 05) $mes = "мая";
echo "<br> 05 $mes";
if ($mes == 06) $mes = "июня";
echo "<br> 06 $mes";
if ($mes == 07) $mes = "июля";
echo "<br> 07 $mes";
if ($mes == 08) $mes = "августа";
echo "<br> 08 $mes";
if ($mes == 09) $mes = "сентября";
echo "<br> 09 $mes";
if ($mes == 10) $mes = "октября";
echo "<br> 10 $mes";
if ($mes == 11) $mes = "ноября";
echo "<br> 11 $mes";
if ($mes == 12) $mes = "декабря";
echo "<br> 12 $mes";
$tmp = " Сегодня " . date("d") . " " . $mes . " " . date("Y") . " " . date("H") . ":" . date("i") . ":" . date("s");
echo "<br> $tmp";
| При его работе получаем:
01 06
02 06
03 06
04 06
05 06
06 июня
07 июня
08 июня
09 сентября
10 сентября
11 сентября
12 сентября
Сегодня 10 сентября 2008 09:55:07
Исправить ситуацию несложно - надо либо сделать замену переменных типа
if ($mes == 01) $mes1 = "января";
| либо числа заключть в кавычки, что гораздо правильнее
if ($mes == "01") $mes1 = "января";
|
Но хочется выяснить, почему этот некорректный код работает так странно: первые 8 строк обрабатывает правильно, на девятой строке сбивается, а десятую-двенадцатую обрабатывает верно? | |
| |
|
|
| |
|
|
| |
для: Владимир55
(10.06.2008 в 10:03)
| | |
<?
$mes = date("n");
if ($mes == 1) $rmes = "января";
echo "<br> 1 $rmes";
if ($mes == 2) $rmes = "февраля";
echo "<br> 2 $rmes";
if ($mes == 3) $rmes = "марта";
echo "<br> 3 $rmes";
if ($mes == 4) $rmes = "апреля";
echo "<br> 4 $rmes";
if ($mes == 5) $rmes = "мая";
echo "<br> 5 $rmes";
if ($mes == 6) $rmes = "июня";
echo "<br> 6 $rmes";
if ($mes == 7) $rmes = "июля";
echo "<br> 7 $rmes";
if ($mes == 8) $rmes = "августа";
echo "<br> 8 $rmes";
if ($mes == 9) $rmes = "сентября";
echo "<br> 9 $rmes";
if ($mes == 10) $rmes = "октября";
echo "<br> 10 $rmes";
if ($mes == 11) $rmes = "ноября";
echo "<br> 11 $rmes";
if ($mes == 12) $rmes = "декабря";
echo "<br> 12 $rmes";
$tmp = " Сегодня " . date("d") . " " . $mes . " " . date("Y") . " " . date("H") . ":" . date("i") . ":" . date("s");
echo "<br> $tmp";
?>
|
Но я бы сделал так:
<?
$months = array ('января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря');
$curr_month = date('n');
echo 'Сегодня: '.date('d').' '.$months[$curr_month-1].' '.date('Y').' года';
?>
|
| |
| |
|
|
| |
|
|
| |
для: mihdan
(10.06.2008 в 10:29)
| | | Рецепт Ваш хорош! Но всё же, почему так себя ведут операторы IF в моем коде?
Хочется понять на будущее. | |
| |
|
|
| |
|
|
| |
для: Владимир55
(10.06.2008 в 12:13)
| | | if ($mes == 06) $mes = "june";
==========================
условие верно, значение переменной $mes поменялось, оно уже не 06. с чем сравниваете дальше? | |
| |
|
|
| |
|
|
| |
для: elenaki
(10.06.2008 в 12:26)
| | | Вот и я тоже так рассуждал!
Вроде бы, при дальнейших сравнениях совпадений быть не млжет, а потому должен остаться "июнь".
Но на практике - посмотрите приведённый вывод - опратор IF приравнивает "июнь" к 09! Если сомневаетесь, запуститете этот скриптик...
Я не знаю, почему так происходит. Может, глюк рнр вылез. | |
| |
|
|
| |
|
|
| |
для: Владимир55
(10.06.2008 в 13:04)
| | | поставьте все 01,02 и тд в кавычках и будет только июнь. а без кавычек не имеет смысла.
числа в виде 01 не существует, а строка 01 должна быть в кавычках. надо рыть в сторону
преобразования типов в PHP.
http://www2.stack.ru/~julia/PHP4/language.types.type-juggling.html | |
| |
|
|
| |
|
|
| |
для: elenaki
(10.06.2008 в 13:11)
| | | Это понятно, про кавычки я уже писал. | |
| |
|
|
| |
|
|
| |
для: Владимир55
(10.06.2008 в 13:53)
| | | В PHP числа, начинающиеся на "0" интерпретируются как восьмиричные. | |
| |
|
|
| |
|
|
| |
для: Владимир55
(10.06.2008 в 13:53)
| | | Вы неверно процитировали вывод скрипта.
08 там соответствует августу.
И такой вариант уже вполне объясним.
Записи 08, 09 равны нулю по причине, указанной BinLaden'ом.
Любое из слов месяца после приведения к целому тоже равно нулю.
Поэтому август и сентябрь и были присвоены. | |
| |
|
|
| |
|
|
| |
для: Trianon
(10.06.2008 в 20:43)
| | | +1 надо было сравнивать со строкой, а не числом. | |
| |
|
|