这个带有插入符号的 PHP 语法是什么?它有什么作用?

发布于 2024-11-28 21:28:24 字数 302 浏览 0 评论 0原文

我在代码库中遇到了这种语法,但找不到更多有关它的信息。它看起来像插入符号运算符(XOR 运算符),但因为下面的语句是在满足某个条件时执行的,所以我认为不是这样。

$this->m_flags ^= $flag;

因为我不知道它叫什么,所以我也无法正确搜索它..

更新: 因为克莱图斯的回答: 那么下面的几行在功能上是相等的吗?

$a = $a ^ $b; 
$a ^= $b; // the shorthand for the line above

I came across this syntax in a codebase and I can't find any more info on it. It looks like the caret operator (XOR operator), but because the statement below was executed when a certain condition was met I don't think that is it.

$this->m_flags ^= $flag;

Because I don't know what it's called I also can't search for it properly..

Update:
Because of Cletus' answer:
Are the following lines then functionally equal?

$a = $a ^ $b; 
$a ^= $b; // the shorthand for the line above

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

涫野音 2024-12-05 21:28:24

它是按位异或等于。它基本上会切换一个标志,因为我得到的 $flag 是 2 的幂。举个例子:

$a = 5; // binary 0101
$b = 4; // binary 0100
$a ^= $b; // now 1, binary 0001

所以第三位已经被翻转了。再次:

$a ^= $b; // now 5, binary 0101

It's bitwise XOR equals. It basically toggles a flag because I'm getting $flag is a power-of-2. To give you an example:

$a = 5; // binary 0101
$b = 4; // binary 0100
$a ^= $b; // now 1, binary 0001

So the third bit has been flipped. Again:

$a ^= $b; // now 5, binary 0101
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文