【问题标题】:Whenever I am using a php variable as index on $_POST, isset() doesn't return true even if the index exist [closed]每当我在 $_POST 上使用 php 变量作为索引时,即使索引存在,isset() 也不会返回 true [关闭]
【发布时间】:2019-12-03 13:09:03
【问题描述】:

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

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

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

我试图让它工作的原因是因为我有一个 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 解决此问题?

编辑:添加代码

编辑:已回答 - 印刷错误

【问题讨论】:

  • isset($POST你的真实语法吗?
  • 你用的是php表单方法POST吗?而且您必须始终使用$_POST,不要忘记下划线。
  • 你的问题太不清楚了。
  • 我加了下划线,我的错
  • @FunkFortyNiner 我怎样才能把我的问题说清楚?

标签: php html input


【解决方案1】:

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

如果是这样,那么变量并没有你认为的那样。这是一个硬编码示例,表明如果变量保持您期望的值,它将起作用。

<?php

$array = [
    'key' => 'value'    
];

var_dump(isset($array['key']));

$keyStoredInAVariable = 'key';

var_dump(isset($array[$keyStoredInAVariable]));

输出

bool(true)
bool(true)

为什么会出现这种情况以及如何仅使用 php 解决此问题?

您不需要变通。您需要弄清楚为什么该变量不包含您认为的内容。但是您没有向我们提供足够的信息来帮助您找出原因。

【讨论】:

  • 我添加了一个代码sn-p,你介意看看吗?
  • 请注意part-numberpart_number 不同。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2019-12-04
    • 2017-10-09
    • 1970-01-01
    • 1970-01-01
    • 2015-02-10
    • 2023-04-02
    • 1970-01-01
    • 2019-10-25
    • 2021-04-10
    相关资源
    最近更新 更多