[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как получить последнюю цифру числа
web-monster
Допустим есть числа, 231, 2, 4, 431, 533

Мне нужно выводить в поле смотрел: 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 - не велосипедисты, а рационализаторы smile.gif И, к тому же, решение с остатком от деления мне больше нравится. Только я не успел его первым написать, когда тема появилась.
Но и со строкой тоже вполне приемлимо smile.gif Именно когда просто отрезаем последнюю цифру.

Спустя 16 минут, 38 секунд (20.11.2009 - 23:29) ak167 написал(а):
web-monster, ЛЕГКО!

Зададим переменной "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. Твой код
$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 написал(а):
Я написал так:


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 написал(а):
Кстати да, а как тогда быть user posted image

Спустя 2 минуты, 2 секунды (21.11.2009 - 00:00) glock18 написал(а):
huh.gif нет слов

Спустя 22 минуты, 13 секунд (21.11.2009 - 00:22) web-monster написал(а):
так как?

Спустя 7 минут, 24 секунды (21.11.2009 - 00:29) glock18 написал(а):
ответ был дан первым постом dry.gif

Спустя 8 часов, 53 минуты, 8 секунд (21.11.2009 - 09:22) Michael написал(а):
Цитата (web-monster @ 20.11.2009 - 20:58)
Кстати да, а как тогда быть  user posted image

Ты написал:
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;
$b=$a/10;

$element=explode(".", $b);

Легко заменяется на давным-давно озвученный в этой теме

Цитата (Michael @ 20.11.2009 - 18:54)
$x % 10


то есть,
$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 раз(а)

никто не будет сильно смотреть как оно у тебя подставляет буквы или нет...

Спустя 2 часа, 1 минута, 13 секунд (22.11.2009 - 01:20) ak167 написал(а):
S{oRpiO, вообщето он делает счетчик посетителей вроде как! Предлагаешь ему все числа от 1 до миллиарда так прописать по твоему способу?smile.gif))

Спустя 6 минут, 8 секунд (22.11.2009 - 01:26) kirik написал(а):
ak167
Не, он предлагает написать в скобочках (а) smile.gif

Спустя 3 минуты, 10 секунд (22.11.2009 - 01:29) glock18 написал(а):
Кстати самое крутое решение из предложенных smile.gif

Спустя 20 минут, 39 секунд (22.11.2009 - 01:50) S{oRpiO написал(а):
я просто не вижу смысла делать мощный скрипт который будет лишний раз нагружать сервер ради одной буквы проще просто поставить в скобках и всё

Спустя 23 минуты, 19 секунд (22.11.2009 - 02:13) kirik написал(а):
Цитата (S{oRpiO @ 21.11.2009 - 17:50)
я просто не вижу смысла

Смысл-то есть некоторый) Приятно наблюдать, когда сайт умный smile.gif "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 такое страшное?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.