[英]Check existence of elements in a class's array constants in PHP 5.6
如何設置像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
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'])
);
由於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']));
您也可以簡單地使用:
var_dump(@\A\B::X['Y']['Z'] !== NULL);
唯一需要注意的是,如果將const
定義為NULL,則無法使用它。
在這種情況下,你可以選擇給const
一個''
(空字符串)值,這在PHP中是非常相同的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.