# InArray

任意の値が配列の中で含まれるかどうか、 `Zend_Validate_InArray`で検証できます。 それは、多次元配列を確認することもできます。

## 単純な配列の検証

最も単純な方法は、初期化のさいに検索される配列を与えることがまさにそうです。

    $validator = new Zend_Validate_InArray(array('key' => 'value',
                                                 'otherkey' => 'othervalue'));
    if ($validator->isValid('value')) {
        // 値が見つかりました
    } else {
        // 値が見つかりません
    }

これは、ちょうどPHPの`in_array()` メソッドのようにふるまいます

デフォルトでは、この検証は厳格ではありませんし、 それは多次元配列を検証することができません。

もちろん、`setHaystack()`メソッドを用いてその後また、 検証する配列を与えることができます。

    $validator = new Zend_Validate_InArray();
    $validator->setHaystack(array('key' => 'value', 'otherkey' => 'othervalue'));

    if ($validator->isValid('value')) {
        // 値が見つかりました
    } else {
        // 値が見つかりません
    }

## 厳密な配列の検証

上述のように、配列の中で厳密な検証をすることもできます。 デフォルトでは、整数値0と文字列"0"の違いがありません。 厳密な検証をするときは、この違いも検証されます。そして、同じ型だけが受け入れられます。

厳密な検証は、異なる２つの方法を用いて行なうこともできます。 初期化で、及びメソッドを用いて。 初期化では、以下の構造で配列を与えなければなりません。

    $validator = new Zend_Validate_InArray(
        array(
            'haystack' => array('key' => 'value', 'otherkey' => 'othervalue'),
            'strict'   => true
        )
    );

    if ($validator->isValid('value')) {
        // 値が見つかりました
    } else {
        // 値が見つかりません
    }

haystackキーは、検証する配列を含みます。 そしてstrictキーを`TRUE`に設定することにより、 検証は厳密な型チェックを用いてなされます。

もちろん、その後この設定値を変えるために、 `setStrict()`メソッドを使うこともできます。

strict設定は、 デフォルトでは`FALSE`であることに注意してください。

## 再帰的な配列の検証

PHPの`in_array()`メソッド に加えて、このバリデータは、多次元配列を検証するために使うこともできます。

多次元配列を検証するためには、 recursiveオプションを設定しなければなりません。

    $validator = new Zend_Validate_InArray(
        array(
            'haystack' => array(
                'firstDimension' => array('key' => 'value',
                                          'otherkey' => 'othervalue'),
                'secondDimension' => array('some' => 'real',
                                           'different' => 'key')),
            'recursive' => true
        )
    );

    if ($validator->isValid('value')) {
        // 値が見つかりました
    } else {
        // 値が見つかりません
    }

それにより、任意の値が含まれるかどうか配列が再帰的に検証されます。

デフォルトでは再帰的な検証は無効であることに注意してください。