Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Диапазон в массив

Сообщения:  [1-10]    [11-20]   [21-30]  [31-34] 

 
 автор: exp   (17.12.2007 в 16:37)   письмо автору
 
   для: Mefisto84   (16.12.2007 в 19:42)
 

с возрастами так правильнее работает

<?php
for ($i 0$i 150$i++)
{
switch(
$i)
    {
    case (
$i 100) < 21 && ($i 100) > :
        echo 
$i ' лет<br>';
    break;

    case (
$i 10) == 1:
        echo 
$i ' год<br>';
    break;
    case (
$i 10) == 0:
        echo 
$i ' лет<br>';
    break;
    case (
$i 10) < 5:
        echo 
$i ' года<br>';
    break;
    default:
        echo 
$i ' лет<br>';
    break;
    
    }

}

вычислений только больше получается походу

   
 
 автор: Mefisto84   (16.12.2007 в 19:42)   письмо автору
 
   для: kasmanaft   (16.12.2007 в 08:06)
 

to udpn
А разве задача про возраст пользователя не конкретная?

kasmanaft
:-) Спасибо конечно.
Действительно 60+70=130 я и не обратил внимания.
Все это понятно, но просто не хотелось применять такие громоздкие конструкции, как говорил раньше - хотелось сделать все это проще. Но раз такой возможности нет, значит буду извращаться. :-)

   
 
 автор: kasmanaft   (16.12.2007 в 08:06)   письмо автору
 
   для: mihdan   (15.12.2007 в 12:12)
 

>> То что просили то и написал, а что что-то не так?
Нужно объяснить, что так делать не нужно :-)

<?php
for ($i 1$i 150$i++) {
    
$age = (string)$i;

    
$len strlen($age) ;
    if (
$len == || $len == && $age[0] !== "1" || $len 2)
        switch (
$age[$len-1]) {
            case 
'1' $age .= ' год'; break;
            case 
'2' $age .= ' года'; break;
            case 
'3' $age .= ' года'; break;
            case 
'4' $age .= ' года'; break;
            default  : 
$age .= ' лет'; break;
        }
    else 
$age .= ' лет'

    echo 
$age"<br />";
}
?>


>>Почему при таком варианте решения на входную $i=1 на выходе получаем "Да"? По идее вообще ничего не должно быть? Так же, почему на входные $i=59 получаем ответ "нет"? по идее же должно быть "Да"?
Это из-за array_merge(), она сдвинула ключи... посмотрите с помощью print_r()

PS 60+70 = 130 ;-)

   
 
 автор: udpn   (15.12.2007 в 20:41)   письмо автору
 
   для: sim5   (15.12.2007 в 19:12)
 

а давайте все дружно попросим автора указать конкретную задачу? надоел весь этот огород.
зы это нужно не столько нам, сколько ему самому, чтобы понять че ему надо

   
 
 автор: sim5   (15.12.2007 в 19:12)   письмо автору
 
   для: Mefisto84   (15.12.2007 в 19:07)
 

Зачем вам десятки? Если возраст более 4 и менее 21 то это "лет" (это исключение из правил:)). В остальных случаях забирайте только младший разряд возраста и проверяйте по нему, ну неужели это сложно?

   
 
 автор: Mefisto84   (15.12.2007 в 19:07)   письмо автору
 
   для: mihdan   (15.12.2007 в 12:12)
 

to sim5
Нет, не решение, так как во всех десятках есть исключения: 31 год, 32 года, 35 лет и так далее.

to mihdan
Ну что-то похожее, но тоже не совсем. Почему при таком варианте решения на входную $i=1 на выходе получаем "Да"? По идее вообще ничего не должно быть? Так же, почему на входные $i=59 получаем ответ "нет"? по идее же должно быть "Да"?

   
 
 автор: mihdan   (15.12.2007 в 12:12)   письмо автору
 
   для: kasmanaft   (14.12.2007 в 19:29)
 

То что просили то и написал, а что что-то не так?

   
 
 автор: kasmanaft   (14.12.2007 в 19:29)   письмо автору
 
   для: mihdan   (14.12.2007 в 18:42)
 

Ну что Вы советуете?

   
 
 автор: mihdan   (14.12.2007 в 18:42)   письмо автору
 
   для: Mefisto84   (14.12.2007 в 18:21)
 


<?
$i 
120;
$array1 array_fill(1050'Да');
$array2 array_fill(6070'Нет');
$array3 array_fill(12010'Не знаю');

$array array_merge($array1$array2$array3);

echo 
$array[$i];
?> 

   
 
 автор: sim5   (14.12.2007 в 18:25)   письмо автору
 
   для: Mefisto84   (14.12.2007 в 18:21)
 

1 - это "год", от 2 по 4 это "года", все остальное "лет". Вот и все решение.

PS. Только в втором десятке исключение.

   

Сообщения:  [1-10]    [11-20]   [21-30]  [31-34] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования