преобразовать оператор switch в единицу, если только в PHP - PullRequest
0 голосов
/ 11 февраля 2020

Я пытаюсь напечатать числа от 1 до 50. для кратного 3 следует вывести «кратное 3». для кратного 5 следует вывести «кратное 5». для кратных 3 и 5 он должен напечатать «кратные 3 и 5 для обоих», для других чисел он должен напечатать это число.

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

Ниже мой код -

function findMultiples($n)  
{  
    $three = 3; // To keep track of multiples of 3  
    $five = 5; // To keep track of multiples of 5

    for ($i = 1; $i <= $n; $i++)  
    {  
        switch ($i) {
        case $i%$three==0 and $i%$five==0:
            echo "multiple of 3 and 5 both";
            break;
        case $i%$three==0:
            echo "multiple of 3";
            break;
        case $i%$five==0:
            echo "multiple of 5";
            break;
        default:
            echo $i;
        }

        echo "<br/>";
    }  

}  

// Driver Code 
findMultiples(50);  //I am getting expected result.

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

$printNumbers = "";

if (($i%$three==0 and $i%$five==0) or ($i%$three==0) or ($i%$five==0))    
{  
    $printNumbers = $i;
}  

echo $printNumbers;

1 Ответ

1 голос
/ 11 февраля 2020

Немного странный вопрос, но если вам нужен только ОДИН IF, вы можете использовать как сравнение, так и присвоение для достижения этого:

<?php
    function findMultiples($n) {
        $three = 3; // To keep track of multiples of 3
        $five = 5; // To keep track of multiples of 5

        for ($i = 1; $i <= $n; $i++) {
            if (($i % $three == 0 and $i % $five == 0 and $text = 'both 3 and 5') or ($i % $three == 0 and $text = '3') or ($i % $five == 0 and $text = '5') or ($text = 'none')) {
                echo $i.' is divided by '.$text;
            }
            echo '<br>';
        }
    }

    findMultiples(50);

Вывод:

1 is divided by none
2 is divided by none
3 is divided by 3
4 is divided by none
5 is divided by 5
6 is divided by 3
7 is divided by none
8 is divided by none
9 is divided by 3
10 is divided by 5
11 is divided by none
12 is divided by 3
13 is divided by none
14 is divided by none
15 is divided by both 3 and 5
16 is divided by none
17 is divided by none
18 is divided by 3
19 is divided by none
20 is divided by 5
21 is divided by 3
22 is divided by none
23 is divided by none
24 is divided by 3
25 is divided by 5
26 is divided by none
27 is divided by 3
28 is divided by none
29 is divided by none
30 is divided by both 3 and 5
31 is divided by none
32 is divided by none
33 is divided by 3
34 is divided by none
35 is divided by 5
36 is divided by 3
37 is divided by none
38 is divided by none
39 is divided by 3
40 is divided by 5
41 is divided by none
42 is divided by 3
43 is divided by none
44 is divided by none
45 is divided by both 3 and 5
46 is divided by none
47 is divided by none
48 is divided by 3
49 is divided by none
50 is divided by 5

При необходимости измените напечатанный текст.

...