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()调用中:

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 表示一个或多个失败。

于 2013-06-07T01:09:15.613 回答
0

可能最干净的是

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