PHP设置为在一个步骤中检查是否同时定义了数组和键


PHP isset to check in one step if both array and key are defined

$foo可能是而不是定义的

if( /* condition */ )
{
    $foo = array( 'bar' => 1 );
}

在代码的后面,我想检查是否同时定义了$foo,以及它是否有一个名为bar的密钥(持有非null值)

我能一步到位吗?

isset的这种用法有效吗?

$defined = isset( $foo['bar'] );

我在一个测试脚本中尝试了上面的语句,没有定义$foo,也没有抛出错误。然而,我在语言规则设置为loose的上下文中从控制台调用了php。

我担心php语言配置设置可能会设置一个更"严格"的语言模式,其中上述内容是非法的,应该在更多步骤中完成:

$defined = isset( $foo ) && array_key_exists( 'bar', $foo ) && $foo['bar']!==null;
$defined = isset( $foo['bar'] );

是否有效,以便在一个步骤中检查是否满足以下所有条件:

  1. 定义了$foo
  2. $foo是一个数组
  3. 该数组有一个名为bar的键
  4. 密钥CCD_ 10的值不是CCD_