我如何将隐藏字段排除在php foreach循环中



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

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

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

我试图找出如何从循环中排除隐藏的字段...?

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

如何排除&lt; input type ='hidden&quot; gt;从php

中的每个循环

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

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

foreach内部:

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

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

或从您的数组中,您可以使用" isset"数组键unset()