Перейти к содержимому


Партнерская программа Kredov

Отделение последней цифры

#1 lesli007

lesli007
  • Пользователь
  • 108 сообщений
  • Репутация: -4
0

Отправлено 21 Март 2011 - 15:40

Из базы данных достаю число. У него нужно узнать последнюю цифру для определения окончания фразы. (Пример: 5раз/2раза). В общем подскажите пожалуйста как вынести последнюю цифру в отдельную переменную

 

 

  • 0

#2 surfer

surfer
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71

Отправлено 21 Март 2011 - 15:48

все очень просто делается 2-мя стандартными функциями для работы со строками
шаг1 - определяем сколько символов в числе
шаг2 - определяем последнюю цифру

<?
// исходное число
$number = 23540345;
// считаем количество символов в числе
$sum_number = strlen($number);
// получаем последний символ
$last_number = substr($number, $sum_number-1, $sum_number);
echo $last_number;
?>

  • 0

#3 yury

yury
  • Пользователь
  • 629 сообщений
  • Репутация: 176

Отправлено 21 Март 2011 - 16:11

lesli007,
вот функция, которая делает примерно то, что вам надо:

//выводит строку "год"/"года"/"лет" в зависимости от числового значения возраста, например: "22 года" или "45 лет"
function s_years($age) {
$t1 = $age % 10;
$t2 = $age % 100;
return ($t1 == 1 && $t2 != 11 ? "год" : ($t1 >= 2 && $t1 <= 4 && ($t2 < 10 || $t2 >= 20) ? "года" : "лет"));
}

Взято из поста на этом форуме: Расчет сколько лет, зная дату рождения, ищу функцию
Думаю, вы сами без труда сможете поправить ее под свой случай.


  • 0

#4 yury

yury
  • Пользователь
  • 629 сообщений
  • Репутация: 176

Отправлено 21 Март 2011 - 18:37

surfer,
думается, вы немножко переборщили с количеством шагов и функций ;)
Чтобы определить последнюю цифру в десятеричном числе достаточно вычислить остаток от деления этого числа на 10:

<?php
// исходное число
$number = 23540345;
// получаем последнюю цифру
echo $number % 10;
?>


  • 0

#5 EugeneM

EugeneM
  • Пользователь
  • 20 сообщений
  • Репутация: 0

Отправлено 22 Март 2011 - 16:11

Одной последней цифры мало.
Например, сравните фразы 2 числа и 12 чисел.
И в том, и в другом случае заканчивается на двойку, но окончания разные.

Поэтому вот более универсальная функция:
function declination_by_num($num, $values)
{
$num = $num % 100;
if ($num >= 5 && $num <= 20) {
return $values[2];
}
$num = $num % 10;
if ($num == 1) {
return $values[0];
}
if ($num >= 2 && $num <= 4) {
return $values[1];
}
return $values[2];
}


Параметры:
$num - число, относительно которого нужно выбрать склонение существительного
$values - массив с вариантами написания существительного:
- $values[0] - для *1 (1 число, 21 число и т.д.)
- $values[1] - для *2, *3 и *4 (2 числа, 24 числа и т.д.)
- $values[2] - для остальных случаев (5 чисел, 17 чисел и т.д.)

Возвращает соответствующий элемент массива $values
  • 0

#6 yury

yury
  • Пользователь
  • 629 сообщений
  • Репутация: 176

Отправлено 22 Март 2011 - 16:57

EugeneM,
вы сообщение #3 читали? ;)
  • 0

#7 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 22 Март 2011 - 19:12

Улыбнуло :) У каждого свой вариант решения задачи.

lesli007, для работы с числами правилен вариант остатка от деления числа на декады, который вам предложили ;)

P.s. Для разных слов разные формы нужно составлять...
  • 0


Оформление форума – IPBSkins.ru