微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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更好.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐