检查是否存在所有多个PHP数组键

Moo*_*man 8 php arrays

我目前正在使用以下内容:

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

    if(isset($a['foo']) && isset($a['bar'])){
      echo 'all exist';
    }
Run Code Online (Sandbox Code Playgroud)

然而,我将有以上几种数组键foobar我必须检查.检查每个必需的密钥是否比isset为每个必需的条目添加更有效的方法?

Bar*_*mar 23

您可以在一次isset()通话中将它们组合在一起:

if (isset($a['foo'], $a['bar']) {
    echo 'all exist';
}
Run Code Online (Sandbox Code Playgroud)

如果您拥有所需的所有密钥数组,则可以执行以下操作:

if (count(array_diff($required_keys, array_keys($a))) == 0) {
    echo 'all exist';
}
Run Code Online (Sandbox Code Playgroud)

  • 出于好奇,我比较了`count(array_diff(...))== 0` vs`array_diff(...)== []`并且能够在1000000次迭代中用后者重复削减0.3秒.这几乎绝对没有性能提升.我选择空数组等于空数组,因为它符合我的编码风格,但对于其他任何好奇的人来说,都归结为偏好. (2认同)