9

現在、次のものを使用しています。

    $a = array('foo' => 'bar', 'bar' => 'foo');

    if(isset($a['foo']) && isset($a['bar'])){
      echo 'all exist';
    }

ただし、チェックしなければならないfooとよりも多くの配列キーがあります。必要なエントリごとにbar追加するよりも、必要なキーごとにチェックする効率的な方法はありますか?isset

4

3 に答える 3

24

isset()1 回の呼び出しでそれらを組み合わせることができます。

if (isset($a['foo'], $a['bar']) {
    echo 'all exist';
}

必要なすべてのキーの配列がある場合は、次のことができます。

if (count(array_diff($required_keys, array_keys($a))) == 0) {
    echo 'all exist';
}
于 2013-06-07T01:07:08.293 に答える
1

チェックするすべてのエントリの配列を作成し、それらすべてを反復処理できます。

$entries = array("foo", "bar", "baz");
$allPassed = true;

foreach($entries as $entry)
{
    if( !isset( $a[$entry] ) )
    {
        $allPassed = false;
        break;
    }
}

$allPassed = true の場合、すべて正常です。false は、1 つ以上の失敗を意味します。

于 2013-06-07T01:09:15.613 に答える
0

おそらく一番きれいなのは

if (array_diff(['foo', 'bar'], array_keys($a))) === []) {
    echo 'all exist';
}
于 2016-08-13T15:18:51.507 に答える