0

看起来很简单,我不知道为什么这不起作用。

我有一个带有几个下拉选择的表单,如果 $message_type 等于其他,则消息仅由 $details 中的详细信息构成。

如果 $message_type 是其他任何东西,它应该将一条消息串在一起。

正在传递变量,并检查了使用 echo 传递到页面的正是“其他”,因此没有拼写错误。

目前,无论消息类型如何,它始终只是将消息创建为 $details,并且如果它不等于“Other”,则不会跟随“else”行。

    if ($message_type = 'Other'){$message = $details;
}
    else {$message = "Action to do: ".$message_type." On ".$user." Extra Details: ".$details;
}

任何帮助,因为这现在真的让我感到困惑。

谢谢

4

4 回答 4

2
if ($message_type == 'Other')
{
    $message = $details;
}
else
{
    $message = "Action to do: ".$message_type." On ".$user." Extra Details: ".$details;
}

$message_type = 'Other'永远是真的

于 2012-07-04T11:51:38.767 回答
2

其他答案已经解释了您做错了什么,但是“为什么”会发生这种情况?这很简单:=赋值运算符和 PHP(以及许多(所有?)语言)中的任何其他运算符一样,运算符有一个 retun 值,在这种情况下就是赋值的值。PHP 现在将其转换为布尔值,因此它是true

if ($message_type = 'Other'){ /* .. */}
if ('Other'){ /* .. */}
if (true){ /* .. */}
于 2012-07-04T12:01:35.470 回答
1

你需要两个等号

if ($message_type == 'Other') {
-------------------^
    $message = $details;
} else {
     $message = "Action to do: ".$message_type." On ".$user." Extra Details: ".$details;
}

一个等号是赋值运算符,所以你说的是“$message_type 等于 'Other'”而不是“如果 $message_type 等于 'Other'”

于 2012-07-04T11:51:46.473 回答
1
if ($message_type = 'Other'){$message = $details;
}
    else {$message = "Action to do: ".$message_type." On ".$user." Extra Details: ".$details;
}

你有if ($message_type = 'Other') 你应该有if ($mesage_type == 'Other')

我想这只是写错了,所以我不会告诉你有什么不同:)

于 2012-07-04T11:52:25.227 回答