оператор if — php если несколько строк

Я хотел бы условно выполнить две функции:

while($row = mysql_fetch_assoc($result))
(strtolower($message) == $row['question'])
? msg($row['answer']) && update($row['question'])
: '';

но этот код не работает.

-1

Решение

Сокращения работают только для однострочных операторов. Так как ваш если Оператор содержит две строки, стенография не работает. Обычно в то время как Циклы отформатированы следующим образом:

while (/* condition */)
{
// code to be executed
}

Ваше троичное выражение также неверно; это должно быть написано следующим образом:

(/* condition */) ? /* if true do this */ : /* if false do this */

Во второй части троичного высказывания (?:), вы используете условный оператор &&, который сравнивает два логических выражения. Насколько я понимаю, ваше намерение использовать && это выполнить две строки, что неверно. Обратитесь к документации: PHP Docs (операторы сравнения)

Вам нужно написать в то время как петля с фигурными скобками, потому что ваш если Оператор содержит несколько строк кода следующим образом:

while($row = mysql_fetch_assoc($result))
{
if (strtolower($message) == $row['question'])
{
msg($row['answer']);
update($row['question']);
}
}
1

Другие решения

Есть ли причина, по которой вам нужно использовать сокращенный код для этого?

Следующее будет более читабельным, а также, когда вы (или кто-то еще) придете обновить / изменить / просмотреть / отладить код когда-нибудь в будущем, будет гораздо более очевидным, каковы были ожидаемые результаты.

while($row = mysql_fetch_assoc($result)) {
if (strtolower($message) == $row['question']) {
msg($row['answer']);
update($row['question']);
}
}

Обычно укороченная?: Версия зарезервирована только для самых простых условий и действий.

0

Определить функцию msg_update() это обертывания msg() а также update():

function msg_update($row) {
msg($row);
update($row);
}

Тогда вы можете сделать:

while($row = mysql_fetch_assoc($result)) (strtolower($message) == $row['question']) ? msg_update($row['answer']) : '';

Это потому, что тенарный оператор принимает только простые операции. Надеюсь, что это работает для вас.

0