我在代碼庫中遇到了這個語法,我找不到更多的信息。它看起來像脫字符號操作符(XOR操作符),但是因爲下面的語句是在滿足某個條件時執行的,所以我不認爲是這樣。這個PHP語法是什麼,並調用了一個脫字符號,它有什麼作用?
$this->m_flags ^= $flag;
因爲我不知道它叫什麼我也不能搜索得當..
更新: 因爲克萊回答: 有以下幾行,然後在功能上等同?
$a = $a^$b;
$a ^= $b; // the shorthand for the line above
我在代碼庫中遇到了這個語法,我找不到更多的信息。它看起來像脫字符號操作符(XOR操作符),但是因爲下面的語句是在滿足某個條件時執行的,所以我不認爲是這樣。這個PHP語法是什麼,並調用了一個脫字符號,它有什麼作用?
$this->m_flags ^= $flag;
因爲我不知道它叫什麼我也不能搜索得當..
更新: 因爲克萊回答: 有以下幾行,然後在功能上等同?
$a = $a^$b;
$a ^= $b; // the shorthand for the line above
這是bitwise XOR equals。它基本上是切換一個國旗,因爲我得到$flag
是2的冪。舉個例子:
$a = 5; // binary 0101
$b = 4; // binary 0100
$a ^= $b; // now 1, binary 0001
所以第三位已翻轉。還是那句話:
$a ^= $b; // now 5, binary 0101
$ b = 4; //二進制必須是0100 – vaidas
我只看到^ =在註釋中使用。有沒有這方面的官方文件? –
這與'$ this-> m_flags = $ this-> m_flags^$ flags'是一樣的' – steveo225
它是'$ this-> m_flags = $ this-> m_flags^$ flag的簡寫形式;'' $ i + = 1'是'$ i = $ i + 1'的縮寫,或者'$ j * = 2'是'$ j = $ j * 2'的縮寫。這是C語言的標準語法。 –
是的,他們在功能上是平等的。 – steveo225