Приветствую, друзья! Помогите правильно и красиво оформить следующий код, если это возможно: PHP: $var1 = $_GET['side']; $var2 = $infoArr[0][1]['positionAmt']; $var3 = $_GET['side']; $var4 = $infoArr[0][0]['positionAmt']; $var5 = $_GET['side2']; $var6 = $infoArr[0][0]['positionAmt2']; if ($var1 == 'SELL' and empty($var2) or $var3 == 'BUY' and empty($var4) or $var5 == 'BUY' and empty($var6)) echo 1; Не нравится, что в условие переменные помещаются кучей, выглядит быдловато)
для начала виду лишнюю переменную var3 которая дублирует var1, убираем ее, а условие так меняем PHP: in_array($var1,['SELL','BUY']) и расставьте скобки что в какой последовательности должно сравниваться.. а то очень удивитесь результатам
чтобы код читался, надо давать переменным осмысленные имена. var1, var2... это говнонейминг в PHP есть две версии логических операторов. одни пишутся словами как у вас - or и and - а другие символами || и &&. они имеют разный приоритет!!! в любом случае, если выражение комбинирует несколько условий И и ИЛИ, всегда ставьте скобки, чтобы явно указать приоритет. приоритет может напрочь перевернуть смысл всего выражения. читайте справочник по языку, это основное для вас на вашем нулевом уровне. https://www.php.net/manual/ru/ --- Добавлено --- пример из документации: PHP: // -------------------- // "||" имеет больший приоритет, чем "or" // Результат выражения (false || true) присваивается переменной $e // Действует как: ($e = (false || true)) $e = false || true; // Константа false присваивается $f, а затем значение true игнорируется // Действует как: (($f = false) or true) $f = false or true; var_dump($e, $f); выведет Код (Text): bool(true) bool(false) в общем случае, если нет реальных причин делать иначе, всегда используйте && и ||, так поступают все ведущие программеры на php.
Все имена переменным давались для примера) Вопрос был в том как красиво вписать значения в условия если это возможно. за ссылку огромная благодарность, и за замечения по моему опыту тоже благодарю)) p.s. А так я с 2015 по 2020 год написал 25 браузерных игр в соц сетях на js+php) вас я еще помню с тех не запамятных времен После небольшого перерыва решил освежить знания, копаюсь в старых кодах)
используй нормальные имена. не пользуйся нестандартными для php логическими операторами. переменные задублированы — значит можно часть выкинуть. комбинируя условия И и ИЛИ окружай операции скобками чтобы явно указать приоритет. всё вместе даст меньше визуального шума, а смысл будет виден лучше. --- Добавлено --- еще раз про приоритеты для примера Код (Text): $ php -r "var_dump(true || false && false);" bool(true) приоритет здесь определяет результат. если БЫ выражение выполнялось буквально слева-направо, как (true || false) && false то результат был бы false. а он выполняется так true || (false && false) и даёт true скобки рулят!
Тут важно уточнить, что в рассмотренном примере приоритет этих логических операторов (|| и or) надо сравненивать с приоритетом операции присваивания. Тогда пояснение "Действует как: (($f = false) or true)" уже не выглядит "взятым с потолка". И в русском переводе "а затем значение true игнорируется" - не корректно. Оно не игнорируется, а выполняется, хотя ничему не присваивается. Но если вместо true будет вызов функции...
Код (Text): $arr['var1'] = isset($_GET['side']) && $_GET['side'] == 'SELL' ? $infoArr[0][1]['positionAmt'] : 0; $arr['var2'] = isset($_GET['side1']) && $_GET['side1'] == 'BUY' ? $infoArr[0][1]['positionAmt1'] : 0; $arr['var3'] = isset($_GET['side2']) && $_GET['side2'] == 'BUY' ? $infoArr[0][1]['positionAmt2'] : 0; if(array_sum($arr) == 0) echo 1;