PHP从foreach语句中排除特定变量值

时间:2012-06-05 04:00:44

标签: php foreach

我正在尝试从表单中排除字段。目前,整个数组付款都会针对每个语句运行。我试图保持字段额外,extra2和extra3被要求。可以设置为null或定义为任何字符串(如果为空)。这就是我目前所拥有的:

  foreach($p as $key => $value) {
    $value = trim($value);
    if($value == '') {
      $keyName = preg_replace('/([A-Z])/', " $1", $key);
      $this->_errors['Payment ' . $keyName] = __('Payment ','cart66') . $keyName . __(' required','cart66');
      $this->_jqErrors[] = "payment-$key";
    }

这是我尝试过的,但无济于事:

 foreach($p as $key => $value) {
    $value = trim($value);
    if($value == '' && $p != 'extra' || 'extra2' || 'extra3') {
      $keyName = preg_replace('/([A-Z])/', " $1", $key);
      $this->_errors['Payment ' . $keyName] = __('Payment ','cart66') . $keyName . __(' required','cart66');
      $this->_jqErrors[] = "payment-$key";
    }
else if ($p['extra'] == '') {
 $_p['extra'] = NULL; 
}
else if ($p['extra2'] == '') {
 $_p['extra2'] = NULL; 
}
else if ($p['extra3'] == '') {
 $_p['extra3'] = NULL; 
}

}

这是我的语法不是吗?数据库本身设置为接受null,不是主要的或唯一的。

1 个答案:

答案 0 :(得分:2)

一种好方法就是检查循环的顶部并继续,如果你在一个应该被排除的字段上。

$exclude = array('field1', 'field2', ...);
foreach ($p as $key => $value)
{
    if (in_array($key, $exclude)) { continue; }

    // your code... 
}