3

我正在尝试从需要的表单中排除字段。目前整个数组支付通过这个为每个语句运行。我试图使字段 extra、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 并且不是主要的或唯一的。

4

1 回答 1

3

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

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

    // your code... 
}
于 2012-06-05T04:06:15.297 回答