Обучу php

11.8K
.
ramzes
litta, ну как мне удобнее было
а вот это уже сложновато для новичков, любимая Альком плюрализация
6. Напишите функцию, которая вычисляет текущее время и возвращает его в формате
с правильными склонениями, например:
22 часа 15 минут
21 час 43 минуты

я даже локалку запустил что бы проверить результат) не был уверен что не затупил ни где
function over_time()
{

    $hours = date('H');
    $minutes =  date('m');
    $result = $hours;
    if ($hours>19) { $hours = $hours%10; }
    switch ($hours) {
        case 1:  { $result.=  ' час, '.$minutes.' '; break;}
        case 2:
        case 3:
        case 4: {  $result.=  ' часа, '.$minutes.' '; break;}
        default: { $result.=  ' часов, '.$minutes.' '; break;}
    }
    if ($minutes>19) { $minutes = $minutes%10; }
    switch ((int)$minutes) {
        case 1:  { $result.=  'минута'; break;}
        case 2:
        case 3:
        case 4: { $result.=  'минуты'; break; }
        default: {$result.=  'минут';  break;}
    }

    return $result;
}

echo over_time(); // 0 часов, 24 минуты
.
Koenig
(\/)____o_O____(\/)
на коленке пилил когда то
http://annimon.com/code/?act=v ... =1586
я помню как писал этот код на работе с телефона se t700 и тестил на хомяке
.
Blade
The Frontend-Warrior
5.

function power($num, $pow){
  if($pow  < 1)
    return 1;
  return $num * power($num, $pow-1);
}


echo  power(2, 10); // 1024


6.

<?php

function rightEnding($n, $m) {
  $n100 = $n % 100; // остаток от деления на 100

  if( $n100 > 0 && $n100 < 5 || $n100 > 20 ) {
    if($n100 % 10 == 1) {
      return $m[0];
    }else if($n100 % 10 >1 && $n100 % 10 < 5){
      return $m[1];
    }else {
      return $m[2];
    }
  }else {
    return $m[2];
  }
}

function formatCurrentDate(){
  return  '' . date('G') . rightEnding(date('H'), array('час', 'часа','часов')) . 
         ' ' . date('m') . rightEnding(date('m'), array('минута','минуты','минут'));
}

echo formatCurrentDate(); // 1час 36минут
.
Для решения 6 задания больше подойдет такая функция:
function morfform($value, $morfforms){
  $mod = $value % 100;                                                                                         
  return $morfforms[($mod > 7 && $mod < 20) ? 2 : [2, 0, 1, 1, 1, 2][min($mod % 10, 5)]];
}

echo morfform(5, ['день', 'дня', 'дней']); // 5 дней
.
.
litta
Урок по ООП и MVC сегодня в 17-00 по Киеву. (18-00 по Москве)
.
# Delphinum (03.11.2016 / 10:33)
Для решения 6 задания больше подойдет такая функция:

function morfform($value, $morfforms){
$mod = $value % 100;
задания явно по switch
имейте совесть, решайте в рамках темы
.
ramzes, не вижу в задании упоминания switch. Меня не было на уроке, мож упустил.
.
Delphinum, не разобрался еще со switch
.
Delphinum, ой ну видно же по общему списку заданий)
в данном случае не оговорено конкретно к этому заданию, но понятно же на что направлен урок)
ну не суть, это я так, типа шучу
Всего: 546