我正在尝试从表单中排除字段。目前,整个数组付款都会针对每个语句运行。我试图保持字段额外,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,不是主要的或唯一的。
答案 0 :(得分:2)
一种好方法就是检查循环的顶部并继续,如果你在一个应该被排除的字段上。
$exclude = array('field1', 'field2', ...);
foreach ($p as $key => $value)
{
if (in_array($key, $exclude)) { continue; }
// your code...
}