Как мне сделать код более гуманным?

228
29 октября 2021, 07:30
if($msg == 'пример сообщения') {
    if($user->messages == 0) {
        echo "нет сообщений";
    } else {
        $chance = mt_rand(1,3);
        if($rand == 1) {
            echo "первое событие";
        } else if($chance == 2) {
            echo "второе событие";
        } else if($chance == 3) {
            echo "третье событие";
        }
    }
}

//Здесь я вывожу рандомное событие, можно ли как то лучше написать этот код?

Answer 1

Вот пример: sandbox

<?php
$msg = 'пример сообщения';
if($msg !== 'пример сообщения')
    return;
//if($user->messages == 0)
//    return;
$texts = array("первое событие", "второе событие", "третье событие");
$chance = rand(0, count($texts) - 1);
echo $texts[$chance];

echo "\n";
$switch_chance = rand(1, 5);
switch($switch_chance) {
    case 1:
        echo 'первое событие';
        break;
    case 2:
        echo 'второе событие';
        break;
    case 3:
        echo 'третье событие';
        break;
    default:
        echo 'событие не найдено';
        break;
}

Не плодите бургер в виде if'ов, это ухудшает читабильность.

@Эникейщик посоветовал вам решить задачу через массив с событиями или через switch.

Я просто дал более подробный ответ.

Answer 2

Использовать switch, например.

Если же нужно просто вывести разный текст, то можно тексты положить в массив и выводить по индексу:

$texts = array("первое событие", "второе событие", "третье событие");

И потом

echo $texts[chance-1];
READ ALSO
Обновление Laravel 5.8 до Laravel 6.0

Обновление Laravel 5.8 до Laravel 6.0

Проект у меня стоит на OpenServer 52

125
Как установить PhpSpreadsheet без использования composer?

Как установить PhpSpreadsheet без использования composer?

Мне нужно перевести xls файл в таблицу mysql с помощью php, погуглив я нашёл данную библиотеку, есть её старая версия - phpexcel, но она как то странно...

86
Перенаправлять все обращения на один url

Перенаправлять все обращения на один url

Вопрос вот какой: каким образом я могу настроить nginx, чтобы он по любому пути после / выполнял один и тот же php-файл?

115
Почему Float.MAX_VALUE-1 == Float.MAX_VALUE – true?

Почему Float.MAX_VALUE-1 == Float.MAX_VALUE – true?

Для начала рассмотрим аналогию, которая пояснит ситуациюПредставьте, что вы имеете возможность хранить только 3 десятичные цифры и вам нужно...

336