0

例から始めましょう。
$array['0'] は value1 と同じです。$array['1'] は value2 と同じです。$array['3'] は value1 と同じです。
特定の文字列セット以外が配列に存在するかどうかをチェックする関数を作成する必要があります。
「value1」と「value2」が配列に存在することを許可し、関数に上記の配列を指定すると、true が返されます。
関数 $array['0'] = 'value3' $array['1'] = 'value2' を入力した場合、配列には "value3" が含まれており、"value1" と "value2" のみが含まれているため、関数は false を返します。この例では許可されています。
これを行う組み込みの PHP 関数はありますか? そうでない場合、どうやってそれを書くつもりですか?

4

2 に答える 2

3

この関数は、あなたが探していることを行います:

function anything_but( $input_array, $values) {
    return count( array_diff( array_unique( $input_array), $values)) == 0;
}

一意$input_arrayの を作成し、その配列と配列の差を計算するだけ$valuesです。その違いに要素がない場合、両方の配列に同じ要素があり、関数は true を返します。そうでない場合は、1 つ以上の要素が含まれるため、関数は false を返します。

デモで動作することがわかります。

于 2012-07-31T19:16:08.923 に答える
1
function valuesInArray($array, $allow)
{
    foreach($array as $value)
    {
        if(!in_array($value, $allow)) return false;
    }

    return true;
}

これを行うためのより短い方法は考えられませんでした。タイプ (=== ではなく ==) もチェックする必要がある場合は、in_array の 3 番目の引数として「true」を追加します。

あなたの例によると、使用法は次のようになります。

valuesInArray(array('value1', 'value2', 'value1'), array('value1', 'value2')); // true

valuesInArray(array('value3', 'value2'), array('value1', 'value2')); // false
于 2012-07-31T19:13:40.733 に答える