首页 文章

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

提问于
浏览
0

我有一个简单的表单,使用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 回答

  • 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) { ... }
    
  • 1

    在foreach内:

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

    (我从你的问题得到的)

    或者从您的数组中,您可以 unset() 具有'isset'数组键的元素 .

相关问题