每当我将 php 变量用作 $_POST 上的索引时,isset() 即使索引存在也不会返回 true



假设我有一个php变量$post_index = 'myInput'

假设<input name="myInput">存在,那么我在$_POST[$post_index]上使用这个 php 变量。

每当我提交表单并从与$post_index中的字符串同名的<input name="myInput">中获取值时,它都可以工作,但是当我使用isset()检查表单是否有该名称的输入时,isset($_POST[$post_index]),与返回 1 的isset($_POST['myInput'])相比,isset()不返回任何内容。

我之所以试图让它工作,是因为我有一个 while 循环,用于检查由递增变量监控的动态增加数量的字段上是否存在输入字段。

<?php
if(isset($_POST['submit-data'])){
$i = 1;
$varcheck = 'part_number'.$i;
echo "<script>alert('".isset($_POST[$varcheck])."');</script>"; //this shows nothing
echo "<script>alert('".isset($_POST['part_number1'])."');</script>"; //this shows "1"
}
?>
<form action="" method="post">
<input name = "part-number1">
<button type="submit" name="submit-data" id="submit-data">Submit</button>
</form>

为什么会这样,我如何仅使用 php 解决此问题?

编辑:添加了代码

编辑:已回答 - 印刷错误

如果我正确理解您的问题,您是说当您检查数组键是否存在时,它仅在您显式键入键名称时才有效。当您将该键分配给变量然后在检查中使用该变量时,它不起作用,对吗?

如果是这样,那么变量没有保存你认为的。下面是一个硬编码示例,显示如果变量包含您期望的值,它将起作用。

<?php
$array = [
'key' => 'value'    
];
var_dump(isset($array['key']));
$keyStoredInAVariable = 'key';
var_dump(isset($array[$keyStoredInAVariable]));

输出

bool(true)
bool(true)

为什么会这样,我如何仅使用 php 解决此问题?

你不需要变通方法。你需要弄清楚为什么这个变量没有保存你认为的东西。但是您没有向我们提供足够的信息来帮助您找出原因。

您正在从 html 发送此数据(在表单或 xmlhttrequest 中(? 还是您尝试手动将$_POST[]变量设置为$_POST[$post_index]? 如果我没记错的话,你的答案是第二个,$_POST只接收$_POST协议发送的请求,你不能在同一个php文件中将其作为公共变量分配

最新更新