InArray(日本語)
任意の値が配列の中で含まれるかどうか、
Zend_Validate_InArrayで検証できます。
それは、多次元配列を確認することもできます。
Zend_Validate_InArray でサポートされるオプション
下記のオプションが Zend_Validate_InArray でサポートされます。
haystack: 検証に対するヘイスタックを設定します。
recursive: 検証が再帰的に行なわれるべきかどうか定義します。
このオプションの既定値は FALSE です。
strict: 検証が厳密に行なわれるべきかどうか定義します。
このオプションの既定値は FALSE です。
単純な配列の検証
最も単純な方法は、初期化の際に検索される配列を与えることがまさにそうです。
'value',
'otherkey' => 'othervalue'));
if ($validator->isValid('value')) {
// 値が見つかりました
} else {
// 値が見つかりません
}
]]>
これは、ちょうどPHPのin_array()
メソッドのようにふるまいます
デフォルトでは、この検証は厳格ではありませんし、
それは多次元配列を検証することができません。
もちろん、setHaystack()メソッドを用いてその後また、
検証する配列を与えることができます。
getHaystack() は、実際に設定されている配列を返します。
setHaystack(array('key' => 'value', 'otherkey' => 'othervalue'));
if ($validator->isValid('value')) {
// 値が見つかりました
} else {
// 値が見つかりません
}
]]>
厳密な配列の検証
上述のように、配列の中で厳密な検証をすることもできます。
デフォルトでは、整数値0と文字列"0"の違いがありません。
厳密な検証をするときは、この違いも検証されます。そして、同じ型だけが受け入れられます。
厳密な検証は、異なる2つの方法を用いて行なうこともできます。
初期化で、及びメソッドを用いて。
初期化では、以下の構造で配列を与えなければなりません。
array('key' => 'value', 'otherkey' => 'othervalue'),
'strict' => true
)
);
if ($validator->isValid('value')) {
// 値が見つかりました
} else {
// 値が見つかりません
}
]]>
haystackキーは、検証する配列を含みます。
そしてstrictキーをTRUEに設定することにより、
検証は厳密な型チェックを用いてなされます。
もちろん、その後この設定値を変えるために、
setStrict()メソッドを使うこともできます。
また、getStrict() で実際に設定されている内容を取得することもできます。
strict設定は、
デフォルトではFALSEであることに注意してください。
再帰的な配列の検証
PHPのin_array()メソッド
に加えて、このバリデータは、多次元配列を検証するために使うこともできます。
多次元配列を検証するためには、
recursiveオプションを設定しなければなりません。
array(
'firstDimension' => array('key' => 'value',
'otherkey' => 'othervalue'),
'secondDimension' => array('some' => 'real',
'different' => 'key')),
'recursive' => true
)
);
if ($validator->isValid('value')) {
// 値が見つかりました
} else {
// 値が見つかりません
}
]]>
それにより、任意の値が含まれるかどうか配列が再帰的に検証されます。
さらに、setRecursive() を使って後からこのオプションを設定したり
getRecursive() で設定を取得したりすることもできます。
array('key' => 'value',
'otherkey' => 'othervalue'),
'secondDimension' => array('some' => 'real',
'different' => 'key')
)
);
$validator->setRecursive(true);
if ($validator->isValid('value')) {
// 値が見つかりました
} else {
// 値が見つかりません
}
]]>
再帰的な検証のデフォルト設定
デフォルトでは再帰的な検証は無効となります。
配列内でのオプションキー
'haystack' や
'strict'、'recursive'
といったキーを配列内で使う場合は、haystack
キーをラップしなければなりません。