我想有条件地执行两个函数:
while($row = mysql_fetch_assoc($result))
(strtolower($message) == $row['question'])
? msg($row['answer']) && update($row['question'])
: '';
但此代码无效。
答案 0 :(得分:1)
速记仅适用于单行语句。由于 if 语句包含两行,因此速记不起作用。通常而循环的格式如下:
while (/* condition */)
{
// code to be executed
}
你的三元表达也是不正确的;它应写成如下:
(/* condition */) ? /* if true do this */ : /* if false do this */
在三元语句的第二部分(?:
)中,使用条件运算符&&
,它比较两个布尔表达式。据我了解,您使用&&
的意图是执行两行,这是不正确的。请参阅文档:PHP Docs (Comparison operators)
您需要使用大括号编写 while 循环,因为 if 语句包含多行代码,如下所示:
while($row = mysql_fetch_assoc($result))
{
if (strtolower($message) == $row['question'])
{
msg($row['answer']);
update($row['question']);
}
}
答案 1 :(得分:0)
有什么理由需要使用速记代码来执行此操作吗?
以下内容会更具可读性,而且当您(或其他人)在将来的某个时间更新/更改/审核/调试代码时,预期结果会更加明显。
while($row = mysql_fetch_assoc($result)) {
if (strtolower($message) == $row['question']) {
msg($row['answer']);
update($row['question']);
}
}
通常,缩短的?:版本仅保留用于最简单的条件和操作。
答案 2 :(得分: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']) : '';
这是因为tenary运营商只需要简单的操作。希望对你有用。