Php isset()总是返回false
我有一个php脚本,它根据从另一个表单发送的数据提交表单。 这是我的密码:Php isset()总是返回false,php,forms,post,http-post,Php,Forms,Post,Http Post,我有一个php脚本,它根据从另一个表单发送的数据提交表单。 这是我的密码: function test($param) { // second form echo "<form action='' method='post'> <input class='btn btn-primary' type='submit' value='test' name='test$param'> </form>&q
function test($param)
{
// second form
echo "<form action='' method='post'>
<input class='btn btn-primary' type='submit' value='test' name='test$param'>
</form>";
if(isset($_POST["test$param"]))
{
echo "true";
}
}
function test1()
{
return 4;
}
function test2()
{
for($x = 0; $x <= test1(); $x++)
{
test($x);
}
}
// first form
echo "<form action='' method='post'>
<input type=radio class=form-check-input value=opt1 name=opt1>opt1
<input type=radio class=form-check-input value=opt2 name=opt2>opt2
<input type=submit value=Submit name=submit>
</form>";
if(isset($_POST["submit"]) && isset($_POST["opt1"]))
{
test2();
}
功能测试($param)
{
//第二种形式
回声“
";
如果(isset($_POST[“test$param”]))
{
呼应“真”;
}
}
函数test1()
{
返回4;
}
函数test2()
{
对于($x=0;$xPHP可能会因为name属性中的$而感到困惑。将其替换为u,代码应按预期运行。它不会回显true:
因为您在提交第二个表单后没有调用test2()
函数,所以无法加载任何表单
关于$param:
您可以尝试使用点(
)将$\u POST属性“test”与$param连接起来,如下所示:
function test($param)
{
// second form
echo "<form action='' method='post'>
<input class='btn btn-primary' type='submit' value='test' name='test".$param."'>
</form>";
if(isset($_POST["test".$param]))
{
echo "true";
}
}
功能测试($param)
{
//第二种形式
回声“
";
如果(isset($_POST[“test”。$param]))
{
呼应“真”;
}
}
请确保$param是字符串类型。应为name='test.“$param.”
或者在表单输出之前准备一个变量
$param_name='test_'。$param
和使用
Name=“.$param_Name.”尝试过,但不起作用。我有另一个表单,它有一个$输入,工作正常,问题是当我根据表单发送的数据尝试提交表单时,使用($var_Name)而不是使用isset函数怎么样?你的意思是if($\u POST[“test_$param”]))
?是的,您也可以尝试这样的方法:如果(!$\u POST[“test\u$param”!==false)
$param的类型是int
,我使用strval()
函数将其压缩为str
,而表单仍然不响应true
调用test()似乎可以工作
函数,并直接将参数放入其中。当您提交五个测试表单中的一个时,它不会再次调用test2()
,我认为这就是它从不返回“true”的原因