0

データベースに追加する前にいくつかのフォームデータを検証しようとしていますが、オプションがFirebugのようなもので追加されたものだけでなく、フォーム内のオプションであったことを検証する必要があります。

投稿された値を次のように使用ifして比較してみました:(さらに27のオプションがあり、さらに3つのオプションフィールドがあります)

if($data['selection'] == 'some_option' || $data['selection'] == 'some_option2') {

ただし、コードの行が非常に長くなり、管理が困難になります。そこで、可能なオプションを格納する配列を作成することを考えました。次に、送信時に、選択したオプションが配列内のエントリの1つと一致するかどうかを確認します。

私のアイデアの1つは、ループを実行して、それが等しいかどうかを確認することでした。

for($i = 1; $i < sizeof($options[$currentselection]); ++$i) {
    if($option[$i] == $data[$currentselection]) {
        return true;
    } else {
        return false;
    }
}

ただし、選択フィールドごとにこれらのいずれかを実行する必要があります(実行したくない)。それで、それをクリーンアップしてすべてを1つにまとめる方法はありますか?また、codeigniterを使用しています。

4

1 に答える 1

1

簡単な方法は、in_array関数を使用することです

$values=Array('op1','op2',...);
return in_array($data['selection'],$values);

または、これを行うことができます:

$values=Array(
  'selection'=>Array('op1','op2'),
  'another_field'=>Array('op3','op4'),
);
return in_array($data[$field],$values[$field]);
于 2012-06-23T06:36:38.597 に答える