Мне нужно выводить в поле смотрел: 231 раз, 2 раз и.т.д
Чтобы не было 2 раз, нужно сделать 2 раза!
Тоесть должно выглядеть:
231 раз, 2 раза, 4 раза, 477 раз, 533 раза
Теоритически можно сделать если число оканчивается на 2,3 или 4 то подставлять "а", вот только как это сделать не знаю!
Помогите PLEASE!
Спустя 56 минут (20.11.2009 - 17:54) Michael написал(а):
$x % 10
выдаст остаток от деления
Спустя 7 минут (20.11.2009 - 18:01) krasilich написал(а):
Я бы обращался к числу как к строке, конкретнее как к массиву символов. И брал бы последний элемент массива.
Спустя 2 часа, 34 минуты, 26 секунд (20.11.2009 - 20:36) web-monster написал(а):
А как это будет выглядеть? Какая функция?
Спустя 13 минут, 7 секунд (20.11.2009 - 20:49) ИНСИ написал(а):
Michael можно по подробнее? пример =)) мне тоже интересно...
Спустя 1 минута, 18 секунд (20.11.2009 - 20:50) glock18 написал(а):
web-monster
Глаза шире, и видим первый предложенный вариант. гораздо корректней, чем приводить к строке и т.д.
Глаза шире, и видим первый предложенный вариант. гораздо корректней, чем приводить к строке и т.д.
$последняяЦыфра = $чысло % 10;
Спустя 1 час, 10 минут, 39 секунд (20.11.2009 - 22:01) Romms написал(а):
Цитата |
А как это будет выглядеть? Какая функция? |
любопытным:
$str=(string) 124314;
echo $str[strlen($str)-1];
Спустя 8 минут, 12 секунд (20.11.2009 - 22:09) sergeiss написал(а):
Цитата (Romms @ 20.11.2009 - 23:01) |
любопытным: $str=(string) 124314; echo $str[strlen($str)-1]; |
echo substr( $str, -1, 1); более наглядно, на мой взгляд
Спустя 58 минут, 22 секунды (20.11.2009 - 23:07) sergeiss написал(а):
Я из этой темы удалил кучу флуда, и в т.ч. свои сообщения. Потому что оказался втянут в какой-то бессмысленный спор "ни о чем".
Спустя 1 минута (20.11.2009 - 23:08) glock18 написал(а):
Еще два велосипедиста... Чем вас чисто математическое решение не устраивает то? оно лучше во всех отношениях
Спустя 3 минуты, 48 секунд (20.11.2009 - 23:12) sergeiss написал(а):
glock18 - не велосипедисты, а рационализаторы И, к тому же, решение с остатком от деления мне больше нравится. Только я не успел его первым написать, когда тема появилась.
Но и со строкой тоже вполне приемлимо Именно когда просто отрезаем последнюю цифру.
Но и со строкой тоже вполне приемлимо Именно когда просто отрезаем последнюю цифру.
Спустя 16 минут, 38 секунд (20.11.2009 - 23:29) ak167 написал(а):
web-monster, ЛЕГКО!
Зададим переменной "a" любое число, разделим на 10 и получившееся значение разделится на целую и десятичную часть. С помощью explode разделим обе части в разные элементы массива и если вторая (правая часть числа) оканчивается на 2 или 3, то переменная "c" будет иметь значение "раза" если же нет, то "раз".
Выведим переменные а и с.
Вот ГОТОВЫЙ скрипит:
Зададим переменной "a" любое число, разделим на 10 и получившееся значение разделится на целую и десятичную часть. С помощью explode разделим обе части в разные элементы массива и если вторая (правая часть числа) оканчивается на 2 или 3, то переменная "c" будет иметь значение "раза" если же нет, то "раз".
Выведим переменные а и с.
Вот ГОТОВЫЙ скрипит:
$a=231;
$b=$a/10;
$element=explode(".", $b);
if($element[1]==2 or $element[1]==3 or $element[1]==4){$c=" раза";}
else {$c=" раз";}
echo $a.$c;
Спустя 3 минуты, 17 секунд (20.11.2009 - 23:32) sergeiss написал(а):
ak167 - скрипт твой
1. Неоптимальный
2. Неверный
---
1. Твой код
Легко заменяется на давным-давно озвученный в этой теме
1. Неоптимальный
2. Неверный
---
1. Твой код
$a=231;
$b=$a/10;
$element=explode(".", $b);
Легко заменяется на давным-давно озвученный в этой теме
Цитата (Michael @ 20.11.2009 - 18:54) |
$x % 10 |
то есть,
$element[1]=$a % 10;
2. Возьми $a=12 или $a=13 и посмотри, что получишь на выходе.
Спустя 5 минут, 31 секунда (20.11.2009 - 23:38) web-monster написал(а):
Я написал так:
Только вот интересно, а если нужно будет подставлять не только к одному значению $kolvo_prosmotrov_you, а ещё к 4 например.
Как тогда быть, не писать же 4 раза такую кучу кода
if($kolvo_prosmotrov_you=="12"||$kolvo_prosmotrov_you=="13"||$kolvo_prosmotrov_you=="14")
{
$a="раз";
}
else
{
$kolvo_vsego_count = $kolvo_prosmotrov_you % 10;
if($kolvo_vsego_count=="2"||$kolvo_vsego_count=="3"||$kolvo_vsego_count=="4")
{
$a="раза";
}
else
{
$a="раз";
}
}
Только вот интересно, а если нужно будет подставлять не только к одному значению $kolvo_prosmotrov_you, а ещё к 4 например.
Как тогда быть, не писать же 4 раза такую кучу кода
Спустя 1 минута, 45 секунд (20.11.2009 - 23:39) sergeiss написал(а):
Цитата (web-monster @ 21.11.2009 - 00:38) |
Как тогда быть, не писать же 4 раза такую кучу кода |
А вот для этого и существует такое понятие, как функция, написанная пользователем...
И еще. Возьми число 112 - что получишь?
Спустя 18 минут, 6 секунд (20.11.2009 - 23:58) web-monster написал(а):
Кстати да, а как тогда быть
Спустя 2 минуты, 2 секунды (21.11.2009 - 00:00) glock18 написал(а):
нет слов
Спустя 22 минуты, 13 секунд (21.11.2009 - 00:22) web-monster написал(а):
так как?
Спустя 7 минут, 24 секунды (21.11.2009 - 00:29) glock18 написал(а):
ответ был дан первым постом
Спустя 8 часов, 53 минуты, 8 секунд (21.11.2009 - 09:22) Michael написал(а):
Цитата (web-monster @ 20.11.2009 - 20:58) |
Кстати да, а как тогда быть |
Ты написал:
if($kolvo_prosmotrov_you=="12"||$kolvo_prosmotrov_you=="13"||$kolvo_prosmotrov_you=="14")
Это частный случай.
Теперь напиши:
$kolvo_prosmotrov_you = $kolvo_prosmotrov_you % 100;
if($kolvo_prosmotrov_you=="12"||$kolvo_prosmotrov_you=="13"||$kolvo_prosmotrov_you=="14");
будет общий случай.
Спустя 13 часов, 45 минут, 15 секунд (21.11.2009 - 23:08) ak167 написал(а):
Цитата (sergeiss @ 20.11.2009 - 20:32) | ||
ak167 - скрипт твой 1. Неоптимальный 2. Неверный --- 1. Твой код $a=231; Легко заменяется на давным-давно озвученный в этой теме
то есть, $element[1]=$a % 10; 2. Возьми $a=12 или $a=13 и посмотри, что получишь на выходе. |
sergeiss, хм... действительно работает! Только вот не пойму как? Что разве значек "%" заменяет функцию explode?
Спустя 10 минут, 53 секунды (21.11.2009 - 23:18) S{oRpiO написал(а):
А зачем такой геморой и лишний кусок кода на одну букву???
Напиши
231 раз(а), 2 раз(а), 4 раз(а), 477 раз(а), 533 раз(а)
никто не будет сильно смотреть как оно у тебя подставляет буквы или нет...
Напиши
231 раз(а), 2 раз(а), 4 раз(а), 477 раз(а), 533 раз(а)
никто не будет сильно смотреть как оно у тебя подставляет буквы или нет...
Спустя 2 часа, 1 минута, 13 секунд (22.11.2009 - 01:20) ak167 написал(а):
S{oRpiO, вообщето он делает счетчик посетителей вроде как! Предлагаешь ему все числа от 1 до миллиарда так прописать по твоему способу?))
Спустя 6 минут, 8 секунд (22.11.2009 - 01:26) kirik написал(а):
ak167
Не, он предлагает написать в скобочках (а)
Не, он предлагает написать в скобочках (а)
Спустя 3 минуты, 10 секунд (22.11.2009 - 01:29) glock18 написал(а):
Кстати самое крутое решение из предложенных
Спустя 20 минут, 39 секунд (22.11.2009 - 01:50) S{oRpiO написал(а):
я просто не вижу смысла делать мощный скрипт который будет лишний раз нагружать сервер ради одной буквы проще просто поставить в скобках и всё
Спустя 23 минуты, 19 секунд (22.11.2009 - 02:13) kirik написал(а):
Цитата (S{oRpiO @ 21.11.2009 - 17:50) |
я просто не вижу смысла |
Смысл-то есть некоторый) Приятно наблюдать, когда сайт умный "1 минуту назад, 2 минуты назад"..
Вот тут например на форуме: "На форуме: 10 месяцев, 10 дней" или "На форуме: 2 месяца, 10 дней"
Спустя 1 час, 45 минут, 53 секунды (22.11.2009 - 03:59) dr_Lev написал(а):
может так?
а вот результат
function postfiks($a){
$x = $a%10;//получаем последнюю цифру
if (($x>=2)&&($x<=4)){ // если цифра - 2, 3 или 4
$x = $a%100; // получаем последние две цифры
if (($x<12)||($x>14)){ // если не 12, не 13 и не 14
return ' раза'; // тогда вернем 'раза'
}
}
return ' раз'; // а иначе будет возвращено 'раз'
}
$a = 156;
$b = 12;
$c = 3;
echo $a.postfiks($a).'</br>';
echo $b.postfiks($b).'</br>';
echo $c.postfiks($c);
а вот результат
156 раз</br>
12 раз</br>
3 раза
Спустя 21 минута, 42 секунды (22.11.2009 - 04:21) S{oRpiO написал(а):
как уже писалось введи число 112
Спустя 17 минут, 27 секунд (22.11.2009 - 04:38) dr_Lev написал(а):
Цитата (S{oRpiO @ 22.11.2009 - 01:21) |
как уже писалось введи число 112 |
$a = 112;
echo $a.postfiks($a);
результат
112 раз
а чем это число 112 такое страшное?