За последние 24 часа нас посетили 37125 программистов и 7806 роботов. Сейчас ищут 1814 программистов ...

Объяснить решение

Тема в разделе "PHP для новичков", создана пользователем 6edyUH, 12 мар 2023.

  1. 6edyUH

    6edyUH Новичок

    С нами с:
    12 мар 2023
    Сообщения:
    21
    Симпатии:
    0
    Реализуйте функцию fizzBuzz(), которая выводит на экран числа в диапазоне от $begin до $end. При этом:
    Если число делится без остатка на 3, то вместо него выводится слово Fizz
    Если число делится без остатка на 5, то вместо него выводится слово Buzz
    Если число делится без остатка и на 3, и на 5, то вместо числа выводится слово FizzBuzz
    В остальных случаях выводится само число

    Подскажите пожалуйста
    я задачу решил вот так:

    PHP:
    1. function fizzBuzz($begin, $end)
    2. {
    3.     if ($begin > $end) {
    4.         echo '';
    5.     }
    6.     for ($i = $begin; $i <= $end; $i++) {
    7.         if ($i % 3 === 0 && $i % 5 !== 0) {
    8.             echo 'Fizz ';
    9.         } elseif ($i % 5 === 0 && $i % 3 !== 0) {
    10.             echo 'Buzz ';
    11.         } elseif ($i % 5 === 0 && $i % 3 === 0) {
    12.             echo 'FizzBuzz ';
    13.         } else {
    14.             echo "{$i} ";
    15.         }
    16.     }
    17. }
    Но подсказали вот такое решение:

    Код (Text):
    1. function fizzBuzz($begin, $end)
    2. {
    3.     for ($i = $begin; $i <= $end; $i++) {
    4.         $hasFizz = $i % 3 === 0;
    5.         $hasBuzz = $i % 5 === 0;
    6.         $fizzPart = $hasFizz ? 'Fizz' : '';
    7.         $buzzPart = $hasBuzz ? 'Buzz' : '';
    8.         print_r($hasFizz || $hasBuzz ? "{$fizzPart}{$buzzPart}" : $i);
    9.         print_r(" ");
    10.     }
    11. }
    $fizzPart = $hasFizz ? 'Fizz' : '';
    $buzzPart = $hasBuzz ? 'Buzz' : '';

    Зачем "?" в этих двух строчках?
    Что он делает?
     
  2. antoniii

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

    С нами с:
    16 мар 2022
    Сообщения:
    419
    Симпатии:
    71
    Это тернарный оператор. Он возвращает либо значение после знака вопроса(если условие true), либо значение после знака : (если условие false)