За последние 24 часа нас посетили 203006 программистов и 2212 роботов. Сейчас ищут 1670 программистов ...

несколько приравненных значений

Тема в разделе "PHP для новичков", создана пользователем serj011, 30 апр 2010.

  1. serj011

    serj011 Активный пользователь

    С нами с:
    18 апр 2010
    Сообщения:
    279
    Симпатии:
    0
    Добрый день.
    Такая проблемма, есть код,
    if ($age_in_years == "18,19,20,25,26,27,28") $let = "лет"; else $let = "год";


    нужно определить равна ли переменная $age_in_years каждому из этих чисел, например.

    через запятую неполучается, через двоеточее тоже:):)
     
  2. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    Заноси все цифры (возраст) в массив, а потом проверяй функцией in_array(), там все просто. http://php.su/functions/?in_array
     
  3. serj011

    serj011 Активный пользователь

    С нами с:
    18 апр 2010
    Сообщения:
    279
    Симпатии:
    0
    спасибо, попробую:)
     
  4. serj011

    serj011 Активный пользователь

    С нами с:
    18 апр 2010
    Сообщения:
    279
    Симпатии:
    0
    я еще не совсем разобрался с in_array(), но мне кажеться это немного не то, мне нужно что бы функция проверяла сама по себе, а резулатат заносила в переменную, которую можно подставить в любой части страницы, такое возможно с in_array()?
     
  5. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Че, прям всем сразу?
     
  6. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    serj011
    ВОзможно. Напиши функцию, которой будешь передавать проверяемое число все с той же in_array, если это число соответствует условию - знач вернет твоя чудо-функция true, а иначе не тру)
     
  7. serj011

    serj011 Активный пользователь

    С нами с:
    18 апр 2010
    Сообщения:
    279
    Симпатии:
    0
    нет, одна из них:)
     
  8. serj011

    serj011 Активный пользователь

    С нами с:
    18 апр 2010
    Сообщения:
    279
    Симпатии:
    0
    люди, ну подскажите как праивльно сделать.... с in_array() у меня не выходит.

    объясню еще раз суть

    в перемоенной $age_in_years есть какое то число, если оно равно из перечисленных, то заносим в переменную $let = "лет" else $let = "год";

    я пробовал так if ($age_in_years == "18,19,20,25,26,27,28") $let = "лет"; else $let = "год";

    но, через запятую не сравнивает с переменной $age_in_years

    помогите плиз:)
     
  9. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    PHP:
    1. <?php
    2. function age_v($age)
    3. {
    4.     $all = array(18,19,20);
    5.     if(!in_array($age,$all))
    6.     {
    7.         return false;
    8.     }
    9.     else
    10.     {
    11.         return true;
    12.     }
    13. }
    14.  
    15.  
    16.  
    17. if(age_v(20))
    18. {
    19.     echo 'Урраа!';
    20. }
    21. else
    22. {
    23.     echo 'Шозанах?';
    24. }
    25. ?>
     
  10. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    PHP:
    1.  
    2. <?php
    3. function ages ($age) {
    4.   $age_in_years = array(18,19,20,25,26,27,28);
    5.   if (in_array((int)$age, $age_in_years)) {
    6.     return $age.' лет';
    7.   }
    8.   return $age.' год';
    9. }
    10.  
    11. $age=20;
    12. echo 'васе' . ages($age);
    13.  
    14. $age=21;
    15. echo 'пете' . ages($age);
    16.  
    17. ?>
     
  11. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    Получается, что у автора будет чтото типа "29 год". Еще ж есть "года", например, 22 года.
    В интернете есть уже готовые варианты преобразования возраста в нужный вид.
     
  12. serj011

    serj011 Активный пользователь

    С нами с:
    18 апр 2010
    Сообщения:
    279
    Симпатии:
    0
    та да, не совсем подходит, интересно можно его доработать еще на "года"???
    может кто видел где готовый в инете такую функцию?
     
  13. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    serj011
    Не наглей. Тебе показали пример - бери дорабатывай под свои нужды. Не знаешь - ищи в интернете, не умеешь - плати деньги.
     
  14. serj011

    serj011 Активный пользователь

    С нами с:
    18 апр 2010
    Сообщения:
    279
    Симпатии:
    0
    спасибо за развернутый ответ кончно:) и за пример тоже. но я не просил писать мне код, я спросил может у кого есть или кто видел в инете...
    и вообще то это не флилансерский сайт, а форум:)
     
  15. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    блин, опять Апельсин говнокодит.
    Не судьба так написать?

    PHP:
    1. <?php
    2.  
    3. function age_v($age) {
    4.     return in_array($age, array(18, 19, 20));
    5. }
    6.  
    7. ?>
     
  16. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    Apple
    Полтора часа тужился над моей функцией чтоб выдать то же самое?
     
  17. serj011

    serj011 Активный пользователь

    С нами с:
    18 апр 2010
    Сообщения:
    279
    Симпатии:
    0
    пока спецы соревнуются кто "круче", лезеры функции пишут:):):)

    я вот написал, работает как надо, но только примитивная помоему очень... или нет?
    может кто знает как ее "отточить"?
    Код (Text):
    1. <?php
    2. $os = array("5", "6", "7", "8");
    3.  
    4. if (in_array("5", $os)) {
    5.     echo "лет";
    6. }
    7. $os = array("21", "31", "41");
    8. if (in_array("5", $os)) {
    9.     echo "год";
    10. }
    11. $os = array("32", "33", "34");
    12. if (in_array("5", $os)) {
    13.     echo "года";
    14. }
    15. ?>
    [/b]
     
  18. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    бугогашечка. хотите суперкодик.
    PHP:
    1.  
    2. <?php
    3. $ages=array(
    4. 1  => 'год',
    5. 2  => 'года',
    6. 3  => 'года',
    7. 4  => 'года',
    8. 5  => 'лет',
    9. 6  => 'лет',
    10. 7  => 'лет',
    11. 8  => 'лет',
    12. 9  => 'лет',
    13. 10 => 'лет',
    14. 11 => 'лет',
    15. 12 => 'лет',
    16. 13 => 'лет',
    17. 14 => 'лет',
    18. 15 => 'лет',
    19. 16 => 'лет',
    20. 17 => 'лет',
    21. 18 => 'лет',
    22. 19 => 'лет',
    23.  
    24. 20 => 'лет',
    25. 21 => 'год',
    26. 22 => 'года',
    27. 23 => 'года',
    28. 24 => 'года',
    29. 25 => 'лет',
    30. 26 => 'лет',
    31. 27 => 'лет',
    32. 28 => 'лет',
    33. 29 => 'лет',
    34.  
    35. 30 => 'лет',
    36. 31 => 'год',
    37. 32 => 'года',
    38. 33 => 'года',
    39. 34 => 'года',
    40. 35 => 'лет',
    41. 36 => 'лет',
    42. 37 => 'лет',
    43. 38 => 'лет',
    44. 39 => 'лет',
    45.  
    46. 40 => 'лет',
    47. 41 => 'год',
    48. 42 => 'года',
    49. 43 => 'года',
    50. 44 => 'года',
    51. 45 => 'лет',
    52. 46 => 'лет',
    53. 47 => 'лет',
    54. 48 => 'лет',
    55. 49 => 'лет',
    56.  
    57. 50 => 'лет',
    58. 51 => 'год',
    59. 52 => 'года',
    60. 53 => 'года',
    61. 54 => 'года',
    62. 55 => 'лет',
    63. 56 => 'лет',
    64. 57 => 'лет',
    65. 58 => 'лет',
    66. 59 => 'лет',
    67.  
    68. 60 => 'лет',
    69. 61 => 'год',
    70. 62 => 'года',
    71. 63 => 'года',
    72. 64 => 'года',
    73. 65 => 'лет',
    74. 66 => 'лет',
    75. 67 => 'лет',
    76. 68 => 'лет',
    77. 69 => 'лет',
    78.  
    79. 70 => 'лет',
    80. 71 => 'год',
    81. 72 => 'года',
    82. 73 => 'года',
    83. 74 => 'года',
    84. 75 => 'лет',
    85. 76 => 'лет',
    86. 77 => 'лет',
    87. 78 => 'лет',
    88. 79 => 'лет',
    89.  
    90. 80 => 'лет',
    91. 81 => 'год',
    92. 82 => 'года',
    93. 83 => 'года',
    94. 84 => 'года',
    95. 85 => 'лет',
    96. 86 => 'лет',
    97. 87 => 'лет',
    98. 88 => 'лет',
    99. 89 => 'лет',
    100.  
    101. 90 => 'лет',
    102. 91 => 'год',
    103. 92 => 'года',
    104. 93 => 'года',
    105. 94 => 'года',
    106. 95 => 'лет',
    107. 96 => 'лет',
    108. 97 => 'лет',
    109. 98 => 'лет',
    110. 99 => 'лет'
    111. );
    112.  
    113. ?>
    114.  
    проще говоря, больше десяти - см последнюю цифру.
     
  19. serj011

    serj011 Активный пользователь

    С нами с:
    18 апр 2010
    Сообщения:
    279
    Симпатии:
    0
    ??????????????????????????

    а в чем смысл Вашего суаеркодика? м как его вообще применить?
     
  20. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Балин
    PHP:
    1. <?php
    2. function numsuf($num)
    3. {
    4.     return ($c=substr($num,-1))==1?'год':in_array($c,array(2,3,4))?'года':'лет';
    5. }
    6. echo 'Тебе 15 ', numsuf(15);
    7.  
     
  21. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    ну по крайней мере принцип ясен =)
     
  22. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    serj011
    а в чем смысл Вашего суаеркодика? м как его вообще применить?
    да это шутка.

    echo '11 ' . $ages[11];
     
  23. serj011

    serj011 Активный пользователь

    С нами с:
    18 апр 2010
    Сообщения:
    279
    Симпатии:
    0
    а можно подробнее, как эта функция работает, где какие переменные подставлять?
     
  24. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    это
    echo 'Тебе 15 ', numsuf(15);
    и это
    echo '11 ' . $ages[11];


    примеры. куда там вставлять цифру - приглядись внимательнее =)

    ЗЫ: нас разводят, братушки...
     
  25. serj011

    serj011 Активный пользователь

    С нами с:
    18 апр 2010
    Сообщения:
    279
    Симпатии:
    0
    а где echo '11 ' . $ages[11];?