Php isset()总是返回false

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

我有一个php脚本,它根据从另一个表单发送的数据提交表单。 这是我的密码:

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”的原因