1

我有一个使用 foreach($_POST as $key=>$value) 将数据插入数据库的简单表单 我在表单上有一个隐藏字段

<input name="isset" type="hidden" value="true" />

我使用 if(isset($_POST['isset'])) {

我正在尝试解决如何从循环中排除隐藏字段...?

我看过这篇文章,但不明白我会在哪里使用 if (strpos($key, 'hdn_') == false) // 继续

如何从 PHP 中的每个循环中排除 <input type="hidden">

任何指导将不胜感激....

4

2 回答 2

3

如果您知道要排除的键的确切名称,这array_diff_key是一个方便的选择:

$keysToRemove = array('isset'); // you can add as many as you want
$values = array_diff_key($_POST, array_flip($keysToRemove));

foreach ($values as $k => $v) { ... }

但是,由于$values打算进入数据库,因此您应该使用允许密钥的白名单而不是黑名单。你可以这样做array_intersect_key

$keysToKeep = array('field1', 'field2', 'field3'); // as many as you want
$values = array_intersect_key($_POST, array_flip($keysToKeep));

foreach ($values as $k => $v) { ... }
于 2012-11-10T16:12:19.237 回答
1

在 foreach 内部:

foreach ($_POST as $key => $value) {
    if ($key != 'isset') {
        //code here
    }
}

(对于我从你的问题中得到的)

或者从您的数组中,您可以unset()使用“isset”数组键的元素。

于 2012-11-10T16:07:41.373 回答