如何设置像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']));
Run Code Online (Sandbox Code Playgroud)
Fatal error: Cannot use isset() on the result of an expression (you can use "null !== expression" instead) in [...] on line 13
Iho*_*nko 13
isset仅适用于变量.您可以使用以下代码检查是否A\B::X['Y']['Z']存在:
var_dump(
defined('\A\B::X') &&
array_key_exists('Y', \A\B::X) &&
array_key_exists('Z', \A\B::X['Y'])
);
Run Code Online (Sandbox Code Playgroud)
因为isset变量(我的坏)而不是任意表达,你可以使用array_key_exists.
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']));
Run Code Online (Sandbox Code Playgroud)