За последние 24 часа нас посетили 95050 программистов и 12091 робот. Сейчас ищут 3003 программиста ...

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

Тема в разделе "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)