Считаю,что Мне надо выделить месяц без значащих нулей.В нижестоящем примере я выделила месяц,но он-2-хзначное число.
Я делаю так:
$mon=substr($datek,5,2); // из выбранной даты выделили месяц (гггг-мм-дд)
$months = Array(1 => 'январь', 'февраль', 'март', 'апрель', 'май', 'июнь','июль', 'август', 'сентябрь', 'октябрь', 'ноябрь', 'декабрь');
echo $months[$mon]
Наименование месяца верно отображается,если значения месяца -2-х значное число.Если же номер месяца меньше 10,то наименование не получаю из массива.
Кто знает- помогите.Спасибо.
Спустя 6 минут, 5 секунд (24.11.2011 - 16:43) TranceIT написал(а):
$mon = substr($datek,5,2); // из выбранной даты выделили месяц (гггг-мм-дд)
if ($mon < 10)
$mon = substr($mon, 1); // Если месяц 1-9 обрезаем начальный ноль
$months = Array(1 => 'январь', 'февраль', 'март', 'апрель', 'май', 'июнь','июль', 'август', 'сентябрь', 'октябрь', 'ноябрь', 'декабрь');
echo $months[$mon]
Спустя 3 минуты, 13 секунд (24.11.2011 - 16:46) Placido написал(а):
Нужно $mon привести к типу INT
$mon=substr($datek,5,2)*1; // из выбранной даты выделили месяц (гггг-мм-дд)
$months = Array(1 => 'январь', 'февраль', 'март', 'апрель', 'май', 'июнь','июль', 'август', 'сентябрь', 'октябрь', 'ноябрь', 'декабрь');
echo $months[$mon]
Спустя 10 минут, 52 секунды (24.11.2011 - 16:57) Winston написал(а):
Достаточно так написать
echo $months[(int)$mon];
Спустя 2 минуты, 5 секунд (24.11.2011 - 16:59) m4a1fox написал(а):
Когда то накарябал вот это, не без помощи конечно! :)
function cor_date($date) {
$date = explode("-", $date);
$month = array(
'01' => 'Янв.',
'02' => 'Фев.',
'03' => 'Март',
'04' => 'Апр.',
'05' => 'Май',
'06' => 'Июнь',
'07' => 'Июль',
'08' => 'Авг.',
'09' => 'Сен.',
'10' => 'Окт.',
'11' => 'Ноябрь',
'12' => 'Декабрь',
);
foreach ($month as $key=>$value) {
if($key == $date[1]);
}
return $date[2].' '.$month[$date[1]];
}
Спустя 15 минут, 8 секунд (24.11.2011 - 17:15) Winston написал(а):
Цитата (m4a1fox @ 24.11.2011 - 15:59) |
foreach ($month as $key=>$value) { if($key == $date[1]); } return $date[2].' '.$month[$date[1]]; |

Спустя 3 минуты, 48 секунд (24.11.2011 - 17:18) m4a1fox написал(а):
Winston
Ну ректально конечно - но работает!
Там по совести говоря - вариантов решения именно этой проблемы - очень много! Это один из них! Пусть не ахти...но работает!
Ну ректально конечно - но работает!


Спустя 2 минуты, 12 секунд (24.11.2011 - 17:21) Winston написал(а):
Цитата (m4a1fox @ 24.11.2011 - 15:59) |
if($key == $date[1]); |
Офигеть, первый раз вижу такую запись if'а
Спустя 8 минут, 56 секунд (24.11.2011 - 17:29) m4a1fox написал(а):
Winston
Цитата |
Офигеть, первый раз вижу такую запись if'а |
А! Не знаю! Не задумывался. Как я понимаю, тут автоматически true возвращается! ДА? Это удивило?! Или я чего не понимаю...
Спустя 1 час, 36 минут, 22 секунды (24.11.2011 - 19:06) I++ написал(а):
setlocale(LC_ALL, 'ru_RU.CP1251', 'rus_RUS.CP1251', 'Russian_Russia.1251');
echo strftime('%B', strtotime('2011-09-22'));
Если хостинг кривой, пинаем хостера.
Спустя 1 час, 53 минуты, 22 секунды (24.11.2011 - 20:59) twin написал(а):
Цитата (m4a1fox @ 24.11.2011 - 14:29) | ||
Winston
А! Не знаю! Не задумывался. Как я понимаю, тут автоматически true возвращается! ДА? Это удивило?! Или я чего не понимаю... |
Зря не задумывался)))
Что вообще делает этот код?
foreach ($month as $key=>$value) {
if($key == $date[1]);
}
Спустя 35 минут, 43 секунды (24.11.2011 - 21:35) m4a1fox написал(а):
twin
Давайте логически рассуждать!
Если не верно, то прошу обїяснить, или направить на верній ответ! Буду признателен!
Давайте логически рассуждать!
foreach ($month as $key=>$value) { // разбивает массив с датами на значение - 01-12 и ссілку знаяения - январь-декабрь
if($key == $date[1]); // если значение равно сторому значению из массива date то возвращает true
}
Если не верно, то прошу обїяснить, или направить на верній ответ! Буду признателен!
Спустя 8 часов, 19 минут, 29 секунд (25.11.2011 - 05:54) Invis1ble написал(а):
m4a1fox
Цитата |
if($key == $date[1]); // если значение равно сторому значению из массива date то возвращает true |
ничегошеньки там не возвращается, тупо холостой цикл.
А по теме - I++ самое нормальное решение дал, однако оно зависит от локали.
Спустя 4 часа, 15 минут, 1 секунда (25.11.2011 - 10:09) I++ написал(а):
echo cor_date('2011-01-22');static есть смысл объявлять только если за время работы скрипта функция будет часто вызываться. (дает примерно двукратный прирост)
function cor_date($date)
{
$date = explode("-", $date);
static $month = array('Янв.','Фев.','Март','Апр.','Май','Июнь','Июль','Авг.','Сен.','Окт.','Ноябрь','Декабрь');
return $date[2].' '.$month[(int)$date[1]-1];
}
Benchmark 100000 итераций (меньше лучше):
$mon=substr($datek,5,2); // из выбранной даты выделили месяц (гггг-мм-дд)
$months = Array(1 => 'январь', 'февраль', 'март', 'апрель', 'май', 'июнь','июль', 'август', 'сентябрь', 'октябрь', 'ноябрь', 'декабрь');
$months[$mon];
0.335165977478
$mon = substr($datek,5,2); // из выбранной даты выделили месяц (гггг-мм-дд)
if ($mon < 10)
$mon = substr($mon, 1); // Если месяц 1-9 обрезаем начальный ноль
$months = Array(1 => 'январь', 'февраль', 'март', 'апрель', 'май', 'июнь','июль', 'август', 'сентябрь', 'октябрь', 'ноябрь', 'декабрь');
0.337824106216
function cor_date2($date) {
$date = explode("-", $date);
$month = array(
'01' => 'Янв.',
'02' => 'Фев.',
'03' => 'Март',
'04' => 'Апр.',
'05' => 'Май',
'06' => 'Июнь',
'07' => 'Июль',
'08' => 'Авг.',
'09' => 'Сен.',
'10' => 'Окт.',
'11' => 'Ноябрь',
'12' => 'Декабрь',
);
foreach ($month as $key=>$value) {
if($key == $date[1]);
}
return $date[2].' '.$month[$date[1]];
}
0.816137075424
setlocale(LC_ALL, 'ru_RU.CP1251', 'rus_RUS.CP1251', 'Russian_Russia.1251');
echo strftime('%B', strtotime('2011-09-22'));
Цитата |
А по теме - I++ самое нормальное решение дал, однако оно зависит от локали. |
Самое короткое, но не лучшее.
3,54256796837
function cor_date($date)
{
$date = explode("-", $date);
static $month = array('Янв.','Фев.','Март','Апр.','Май','Июнь','Июль','Авг.','Сен.','Окт.','Ноябрь','Декабрь');
return $date[2].' '.$month[(int)$date[1]-1];
}
0,215945005417
function cor_date($date)
{
$date = explode("-", $date);
$month = array('Янв.','Фев.','Март','Апр.','Май','Июнь','Июль','Авг.','Сен.','Окт.','Ноябрь','Декабрь');
return $date[2].' '.$month[(int)$date[1]-1];
}
0,414947032928
function cor_date($date)
{
$date = explode("-", $date);
static $month = array(1=>'Янв.','Фев.','Март','Апр.','Май','Июнь','Июль','Авг.','Сен.','Окт.','Ноябрь','Декабрь');
return $date[2].' '.$month[(int)$date[1]];
}
0,201259851456
function cor_date($date)
{
$date = explode('-', $date);
static $month = array(1=>'Янв.','Фев.','Март','Апр.','Май','Июнь','Июль','Авг.','Сен.','Окт.','Ноябрь','Декабрь');
return $date[2].' '.$month[(int)"$date[1]"];
}
0,193631887436
:)
Спустя 10 минут, 5 секунд (25.11.2011 - 10:19) Invis1ble написал(а):
I++
Цитата |
Самое короткое, но не лучшее. |
я про краткость и говорил, не думаю, что будет вызываться 100к раз

Спустя 1 минута, 15 секунд (25.11.2011 - 10:21) Winston написал(а):
I++
Спасибо за замеры.
Эта пять
Спасибо за замеры.
Эта пять
