Могу ли я перейти из PHP if{} в else{}

#php #if-statement

#php #оператор if

Вопрос:

Если у меня есть код, подобный этому

 <?php
 if( X == Y ){
    find a record in the db
    some condition
 }
 else{
    do something
 }
 

можно ли перейти к оператору else на основе some condition ?

Итак, X равно Y, но затем что-то в найденной записи db является триггером, который заставляет меня хотеть запустить else{} код.

Я знаю, что мог бы дублировать код внутри if{} или создать функцию.

Это не какой-то критически важный код, это скорее вопрос любопытства.

Комментарии:

1. Взгляните сюда: php.net/manual/en/control-structures.goto.php

2. Вы не можете просто запустить else код, но есть много способов решить подобную проблему. Решение будет зависеть от проблемы.

3. NOOOOOOOOOOOO…………………….. Не goto делайте этого!

4. @AbraCadaver как человек, который начинал с BASIC, я очень хорошо знаю, как создавать спагетти-код: o)

5. @Steve: Да, ZBasic и GW-Basic 🙂

Ответ №1:

Вы также можете сделать это без else, но с дополнительным if .

 // Set a flag that tells us if we should run the code or not
$runIt = true;

if (X == Y) {
    $runIt = false;
    // Do cool stuff
    // If some condition:
    $runIt = true;
}

if ($runIt) {
   // Do your stuff...
}
 

Ответ №2:

В PHP есть goto инструкция, но я бы посоветовал не использовать ее, а вместо этого реструктурировать код, возможно, на что-то подобное:

 function checkCondition() {
    // find record in db
    // some condition, return false if you want to go into else below
}

if ((x == y) amp;amp; checkCondition()) {
    // action 1
} else {
    // do something
}