当我打印$letter
变量时,我没有得到正确的值。 它总是0
来。
索引.php
<form method="get" class="txtweb-form" action="index.php">
Guess a letter: <input type="text" name="txtweb-message" />
<input type="submit" value="submit" name="guess" />
</form>
<?php
$params = (object) $_REQUEST;
//print_r($params);
if (isset($params->guess)) {
$letter = $params->txtweb-message;
echo $letter;exit;
}
?>
您可能需要
在输入名称中使用_
而不是-
。 -
不是属性名称的 PHP 变量中的有效字符。
实际发生的是这样的:
$letter = $params->txtweb - message; // a subtraction operation
您最终会从未设置的对象属性$params->txtweb
中减去未设置的常量message
。因此,您可以0
.
您可以将-
保留在输入名称中,但应使用 $_REQUEST['txtweb-message']
或 $_GET['txtweb-message']
(不强制转换为对象)来检索值。
真的没有任何理由将超全局数组强制转换为对象,这就是引入您的问题的原因。
此处附加说明。 您确实应该在打开错误报告的情况下进行开发。 上面显示的操作将导致显示两个警告,这可以帮助您了解正在发生的事情。
为什么要投射到对象中?将其视为数组不会更容易吗
<?php
$params = $_REQUEST;
if (isset($params["guess"])) {
$letter = $params["txtweb-message"];
echo $letter;exit;
}
?>