如何设置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
答案 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中非常相同。