检查PHP 5.6中类的数组常量中是否存在元素

时间:2016-01-17 21:03:12

标签: php constants

如何设置A \ B :: X ['Y'] ['Z']之类的常量元素?

<?php

namespace A;

class B
{
    const X = [
        'Y' => [
            'Z' => 'value'
        ]
    ];
}

var_dump(defined('\A\B::X') && isset(\A\B::X['Y']['Z']));

Fatal error: Cannot use isset() on the result of an expression (you can use "null !== expression" instead) in [...] on line 13

3 个答案:

答案 0 :(得分:13)

namespace A; class B { const X = [ 'Y' => [ 'Z' => 'value' ] ]; } var_dump(array_key_exists('Y', \A\B::X) && array_key_exists('Z', \A\B::X['Y'])); 仅适用于变量。您可以使用以下代码检查isset是否存在:

A\B::X['Y']['Z']

答案 1 :(得分:5)

由于ssl适用于变量(我的不好)而不适用于任意表达式,因此您可以使用isset代替。

array_key_exists

答案 2 :(得分:0)

您也可以使用:

var_dump(@\A\B::X['Y']['Z'] !== NULL);

唯一需要注意的是,如果您的const可能被定义为NULL,则无法使用它。
在这种情况下,您可以选择提供const一个''(空字符串)值,这在PHP中非常相同。