我有一个简单的表单,使用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
任何指导都将不胜感激....
答案 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) { ... }