Это правильный способ сделать два равных утверждения в одном? - PullRequest
0 голосов
/ 07 октября 2011

Я делаю это равное утверждение, и оно не работает.

if ( $1 === $one ) && ( $2 == $two ) {
    require("one.php");
} elseIF($2 === $two) {
    require("two.php");
}else{ 
    require("three.php");
    die("");
}

И это сообщение об ошибке, которое я получаю:

   PHP Parse error:  syntax error, unexpected T_BOOLEAN_AND 

Ответы [ 5 ]

2 голосов
/ 07 октября 2011

Вам нужно сделать:

if (( $1 === $one ) && ( $2 == $two )) {

Или:

if ( $1 === $one  &&  $2 == $two ) {

Не забудьте думать об этом как об алгебре, в которой вы заключаете скобки, оператор 'IF @ должен оцениваться как единое целое, а все критерии, которые вы хотите оценить, заключаются в (и). В зависимости от того, насколько сложным вы хотите сделать свои оценки (построить это формально), вы можете заключить последующие критерии в скобки, например,

x || y
x && y
x && (y || z)
x || (y && z)
2 голосов
/ 07 октября 2011

Должно быть:

if (( $1 === $one ) && ( $2 == $two )) {
    require("one.php");
} elseIF($2 === $two) {
    require("two.php");
} else { 
    require("three.php");
    die("");
}
1 голос
/ 07 октября 2011

Нет, проблема в первой строке.

сделать:

if ($1 === $one && $2 == $two) { ...

Условие "если" всегда находится в пределах одного "()". Вы можете вкладывать их, но условие if останавливается после закрытия первого. Так что if (($1 === $one) && ($2 == $two)) также допустимо, но в этом случае нет необходимости вкладывать его, если только вы не обнаружите, что оно улучшает читабельность.

Немного критики в сторону:

Эти имена переменных очень плохие, так как они ничего не объясняют о том, что происходит. То же самое с именами файлов.

И, пожалуйста, с сахаром сверху, исправьте свой отступ (посмотрите ответ дравора на приличный отступ). Привыкайте к правильному отступу сразу, так как позже будет сложнее привыкнуть к измененной практике. Когда кто-то еще начинает работать с вашим кодом, он проклинает ваше имя, если вы продолжаете делать такие отступы. Это действительно важно для читабельности.

1 голос
/ 07 октября 2011
if (( $1 === $one ) && ( $2 == $two )) {
    require "one.php";
} elseif ($2 === $two) {
    require "two.php";
} else { 
    require "three.php";
    die("Some message");
}
1 голос
/ 07 октября 2011

Вам необходимо заключить два условия в первом выражении IF в дополнительные скобки:

if (( $1 === $one ) && ( $2 == $two ))
...