Если у меня есть код что-то вроде этого
<?php
if ( X == Y ){
find a record in the db
some condition
}
else{
do something
}
можно ли перейти к оператору else на основе some condition
?
Итак, X действительно равен Y, но что-то в найденной записи базы данных является триггером, который заставляет меня хотеть запустить код else{}
.
Я знаю, что могу продублировать код внутри if{}
или создать функцию.
Это не какой-то критически важный код, это скорее любопытный вопрос.
Вы не можете просто запустить код else
, но есть много способов решить подобную проблему. Решение будет зависеть от проблемы.
НЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕТЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕТЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕТЕЕЕЕЕЕЕЕЕЕЕТЕЕЕЕЕЕЕЕЕЕЕЙЕЙЕЙЕЙЕЙНОЙ goto
!
@AbraCadaver как человек, который начал с BASIC, я очень хорошо знаю, как создавать спагетти-код :о)
@Steve: Да, ZBasic и GW-Basic :-)
В PHP есть инструкция goto
, но я бы посоветовал не использовать ее, а вместо этого реструктурировать код, возможно, примерно так:
function checkCondition() {
// find record in db
// some condition, return false if you want to go into else below
}
if ((x == y) && checkCondition()) {
// action 1
} else {
// do something
}
Вы также можете сделать это без 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...
}
Взгляните сюда: php.net/manual/en/control-structures.goto.php