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

良い方法の 1 つは、ループの先頭でチェックし、除外すべきフィールドにいる場合は続行することです。

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

    // your code... 
}
于 2012-06-05T04:06:15.297 に答える