InArray(日本語) 任意の値が配列の中で含まれるかどうか、 Zend_Validate_InArrayで検証できます。 それは、多次元配列を確認することもできます。 Zend_Validate_InArray でサポートされるオプション 下記のオプションが Zend_Validate_InArray でサポートされます。 haystack: 検証に対するヘイスタックを設定します。 recursive: 検証が再帰的に行なわれるべきかどうか定義します。 このオプションの既定値は FALSE です。 strict: 検証が厳密に行なわれるべきかどうか定義します。 このオプションの既定値は FALSE です。 単純な配列の検証 最も単純な方法は、初期化の際に検索される配列を与えることがまさにそうです。 'value', 'otherkey' => 'othervalue')); if ($validator->isValid('value')) { // 値が見つかりました } else { // 値が見つかりません } ]]> これは、ちょうどPHPin_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であることに注意してください。 再帰的な配列の検証 PHPin_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 キーをラップしなければなりません。