У меня возникли проблемы с упрощением этой условной логики высказываний. Есть ли более шипучий способ написать это?Как я могу упростить эту логику
if(($x || $a) && ($x || $y))
{
if($x){
return true;
}
}
return false;
У меня возникли проблемы с упрощением этой условной логики высказываний. Есть ли более шипучий способ написать это?Как я могу упростить эту логику
if(($x || $a) && ($x || $y))
{
if($x){
return true;
}
}
return false;
if ($x) return true;
return false;
Согласно выписке, вы только возвращает истину, если $x
верно, поэтому это единственное заявление, что вам действительно нужно, чтобы проверить, правильно? Переменные $a
и $y
совершенно не актуальны.
Edit: То же самое, как:
return (bool) $x;
Возможно, он захочет сделать это, если и только если один из '$ a',' $ y' - 'true'. –
Я бы использовал 'return (bool) $ x;' – Gumbo
@The Charmer: Но даже в первом утверждении, если '$ x' истинно, оба утверждения становятся истинными автоматически.Если '$ x || $ a' и '$ x || $ y' оба истины, если '$ x' истинно, поэтому && между ними делает общее утверждение истинным. – animuson
if($x){
return true;
}
return false;
?
Edit:
return $x
if($x && ($a || $y))
return true;
return false;
Это семантически не то же самое. '($ x || $ a) && ($ x || $ y)' эквивалентно '$ x || ($ a && $ y) 'и' $ x && ($ a || $ y) 'to' ($ x || $ a) && ($ x || $ y) '. – Gumbo
if(($x && $a && $y)
{
return true;
}
return false;
EDIT: это просто return $x;
Если вы только возвращает истину, если $ х верно, то остальная часть кода не имеет значения , Таким образом,
return (bool) $x;
EDIT: Oops ... bool - это отливка, а не функция.
Вы могли бы написать это как выражение в одну строку ...
return $x;
независимо от $ а и $ у, $ х должно быть правдой, чтобы вернуться верно
Как и многие люди уже говорили , в вашем коде есть только $ x. Я предполагаю, что самый короткий код:
return $x
Что делать, если '$ x' является строкой или числом? Тогда он не возвращает логическое значение true/false. – animuson
Вы правы. Похоже, нам нужно, чтобы if ($ x) возвращал true; else возвращает false. Во всяком случае, почему у вас есть метод для этого, когда единственное, что он делает, это проверить значение $ x ... –
Не знаю, похоже, это было бы хорошее школьное задание, кто знает. – animuson
Состояние внешней if
, ($x || $a) && ($x || $y)
, эквивалентно $x || ($a && $y)
. Когда мы соединимся с условием, что $x
также должно быть true (внутренний if
), получаем ($x || ($a && $y)) && $x
. И это эквивалентно $x && $x || $x && $a && $y
, которое может быть уменьшено до $x || $x && $a && $y
. В обоих ветвях OR $x
должно быть true для продолжения. Но если $x
в правой ветке соответствует true, все состояние уже есть true.
Таким образом, единственная переменная, которая должна быть истинным является $x
:
return (bool) $x;
'возвращение х & & true;'? – Anycorn
это шутка? – Drew