如何从PHP foreach循环中排除隐藏字段

时间:2012-11-10 16:04:46

标签: php

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

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

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

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

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

How to exclude <input type="hidden"> from a for each loop in PHP

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

2 个答案:

答案 0 :(得分:1)

在foreach中:

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

(我从你的问题得到的)

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

答案 1 :(得分:1)

如果您知道要排除的密钥的确切名称,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) { ... }