如果定义了数组和键,则PHP将一步检查

时间:2015-04-04 11:09:14

标签: php arrays isset

$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;

1 个答案:

答案 0 :(得分:1)

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

有效可以一步检查:

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