php-define(‘MENU_IS_ROOT’,0x0001)和define(‘MENU_IS_ROOT’,1)有什么区别?

在drupal | menu.inc中,我发现常量定义为十六进制:

define('MENU_IS_ROOT', 0x0001)

为什么不

define('MENU_IS_ROOT', 1)

=================================

还有另一个代码片段:

define('MENU_VISIBLE_IN_BREADCRUMB', 0x0004);
define('MENU_SUGGESTED_ITEM', MENU_VISIBLE_IN_BREADCRUMB | 0x0010);

等于MENU_SUGGESTED_ITEM = MENU_VISIBLE_IN_BREADCRUMB = 16吗?

解决方法:

bitwise operations

您可以执行以下操作:

<?PHP

define("FLAG_ONE", 0x0001);
define("FLAG_TWO", 0x0002);
define("FLAG_THREE", 0x0004);
define("FLAG_FOUR", 0x0008);
define("FLAG_ALL", FLAG_ONE|FLAG_TWO|FLAG_THREE|FLAG_FOUR);

function make_waffles()
{
    echo 'Yummy! We love Waffles!!!';
}

function do_something($flags)
{
    if ($flags & FLAG_TWO)
       make_waffles();
}

$flags |= FLAG_TWO;
do_something($flags);

?>

顺便说一句,您可以检查此answer以了解何时使用const或define更好.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...