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 未定义并且没有抛出错误。但是,我在语言规则设置为 松散 .

的上下文中从控制台调用了 php

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

$defined = isset( $foo ) && array_key_exists( 'bar', $foo ) && $foo['bar']!==null;
$defined = isset( $foo['bar'] );
如果满足以下所有条件,

有效 单步检查:

  1. $foo定义
  2. $foo是一个数组
  3. 数组有一个名为 bar
  4. 的键
  5. bar 的值不是 null