參考 - 這個符號在PHP中意味著什麼?




8 Answers

按位運算符

有點什麼? 位是1或0的表示。基本上為OFF(0)和ON(1)

什麼是字節? 一個字節由8位組成,一個字節的最高值為255,這意味著每個位都被置位。 我們將看看為什麼字節的最大值是255。

-------------------------------------------
|      1 Byte ( 8 bits )                  |
-------------------------------------------
|Place Value | 128| 64| 32| 16| 8| 4| 2| 1|     
-------------------------------------------

這個1字節的表示

1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 = 255(1字節)

一些例子可以更好地理解

“AND”運算符: &

$a =  9;
$b = 10;
echo $a & $b;

這會輸出數字8.為什麼? 好吧,讓我們看一下使用我們的表格示例。

-------------------------------------------
|      1 Byte ( 8 bits )                  |
-------------------------------------------
|Place Value | 128| 64| 32| 16| 8| 4| 2| 1|     
-------------------------------------------
|      $a    |   0|  0|  0|  0| 1| 0| 0| 1|    
-------------------------------------------
|      $b    |   0|  0|  0|  0| 1| 0| 1| 0|
------------------------------------------- 
|      &     |   0|  0|  0|  0| 1| 0| 0| 0|
------------------------------------------- 

所以你可以從表中看到他們共享的唯一位是8位。

第二個例子

$a =  36;
$b = 103;
echo $a & $b; // This would output the number 36.
$a = 00100100
$b = 01100111

兩個共享位是32和4,當它們加在一起時返回36。

“或”運算符: |

$a =  9;
$b = 10;
echo $a | $b;

這將輸出數字11.為什麼?

-------------------------------------------
|      1 Byte ( 8 bits )                  |
-------------------------------------------
|Place Value | 128| 64| 32| 16| 8| 4| 2| 1|     
-------------------------------------------
|      $a    |   0|  0|  0|  0| 1| 0| 0| 1|    
-------------------------------------------
|      $b    |   0|  0|  0|  0| 1| 0| 1| 0|
------------------------------------------- 
|      |     |   0|  0|  0|  0| 1| 0| 1| 1|
-------------------------------------------

您會注意到我們在8列,2列和1列中設置了3位。 添加它們:8 + 2 + 1 = 11。

php operators symbols php-5.3

這是什麼?

這是一系列關於PHP語法的問題。 這也是社區Wiki,因此邀請每個人參與維護此列表。

為什麼是這樣?

過去很難找到關於運算符和其他語法標記的問題.¹
主要思想是鏈接到上的現有問題,因此我們更容易引用它們,而不是複制PHP手冊中的內容。

¹注意:自2013年1月起, 確實支持特殊字符 。 只需用引號括住搜索詞,例如[php] "==" vs "==="

我該怎麼辦?

如果您因為提出這樣的問題而被某人指向此處,請在下面找到具體的語法。 PHP手冊的鏈接頁面以及鏈接的問題可能會回答您的問題。 如果是這樣,我們鼓勵您提出答案。 此列表並不代替其他人提供的幫助。

列表

如果您的特定令牌未在下面列出,則可以在“ 解析器令牌列表”中找到它。

& 按位運算符References

=& References

&= 按位運算符

&& 邏輯運算符

% 算術運算符

!! 邏輯運算符

@ 錯誤控制運算符

?: 三元運算符

?? Null Coalesce運算符 (自PHP 7起)

: 控制結構的替代語法三元運算符

:: 範圍解析運算符

\ Namespaces

-> 類和對象

=> Arrays

^ 按位運算符

>> 按位運算符

<< 按位運算符

<<< Heredoc或Nowdoc

= 分配運營商

== 比較運算符

===

!== 比較運算符

!= 比較運算符

<> 比較運算符

<=> (自PHP 7.0起)

  • 太空飛船(三路比較)操作員

| 按位運算符

|| 邏輯運算符

~ 按位運算符

+ 算術運算符數組運算符

+=-= 賦值運算符

++-- 遞增/遞減運算符

.= 分配運營商

. 字符串運算符

, 函數參數

, 變量聲明

$$ 變量變量

` 執行運營商

<?= 短開標籤

[] Arrays (PHP 5.4以來的短語法)

<? 打開和關閉標籤

... 參數解包 (自PHP 5.6起)

** Exponentiation (自PHP 5.6起)

# 單行shell風格的評論




Syntax    Name             Description

x == y    Equality         True if x and y have the same key/value pairs
x != y    Inequality       True if x is not equal to y
x === y   Identity         True if x and y have the same key/value pairs
                            in the same order and of the same types
x !== y   Non-identity     True if x is not identical to y
++ x      Pre-increment    Increments x by one, then returns x
x ++      Post-increment   Returns x, then increments x by one
-- x      Pre-decrement    Decrements x by one, then returns x
x --      Post-decrement   Returns x, then decrements x by one
x and y   And              True if both x and y are true x=6 y=3
                           (x < 10 and y > 1) returns true 
x && y    And              True if both x and y are true x=6 y=3
                           (x < 10 && y > 1) returns true
a . b     Concatenation    Concatenate two strings: "Hi" . "Ha"



<=>宇宙飛船運營商

在PHP 7中添加

宇宙飛船運營商 <=>是PHP 7中添加的最新比較運算符。它是一個非關聯二元運算符,具有與相等運算符相同的優先級( ==!====!== )。 該運算符允許在左手操作數和右手操作數之間進行更簡單的三向比較。

運算符導致整數表達式為:

  • 兩個操作數相等時為0
  • 當左側操作數小於右側操作數時小於0
  • 當左側操作數大於右側操作數時,大於0

例如

1 <=> 1; // 0
1 <=> 2; // -1
2 <=> 1; // 1

使用此運算符的一個很好的實際應用是比較類型回調,預期基於兩個值之間的三向比較返回零,負或正整數。 傳遞給usort的比較函數就是一個這樣的例子。

在PHP 7之前你會寫...

$arr = [4,2,1,3];

usort($arr, function ($a, $b) {
    if ($a < $b) {
        return -1;
    } elseif ($a > $b) {
        return 1;
    } else {
        return 0;
    }
});

從PHP 7開始,你可以寫...

$arr = [4,2,1,3];

usort($arr, function ($a, $b) {
    return $a <=> $b;
});



PHP運算符的概述:

邏輯運算符:

  • $ a && $ b:如果$ a和$ b都為TRUE,則為TRUE。
  • $ a || $ b:如果$ a或$ b為TRUE,則為TRUE。
  • $ a xor $ b:如果$ a或$ b為TRUE,則為TRUE,但不是兩者都是。
  • $ a:如果$ a不為TRUE,則為TRUE。
  • $ a和$ b:如果$ a和$ b都為TRUE,則為TRUE。
  • $ a或$ b:如果$ a或$ b為TRUE,則為TRUE。

比較運算符:

  • $ a == $ b:如果在類型雜耍後$ a等於$ b,則為TRUE。
  • $ a === $ b:如果$ a等於$ b,則為TRUE,它們屬於同一類型。
  • $ a!= $ b:如果在類型雜耍之後$ a不等於$ b,則為TRUE。
  • $ a <> $ b:如果在類型雜耍之後$ a不等於$ b,則為TRUE。
  • $ a!== $ b:如果$ a不等於$ b,則為TRUE,或者它們的類型不同。
  • $ a <$ b :如果$ a嚴格小於$ b,則為TRUE。
  • $ a> $ b :如果$ a嚴格大於$ b,則為TRUE。
  • $ a <= $ b :如果$ a小於或等於$ b,則為TRUE。
  • $ a> = $ b :如果$ a大於或等於$ b,則為TRUE。
  • $ a <=> $ b :當$ a分別小於,等於或大於$ b時,小於,等於或大於零的整數。 從PHP 7開始提供。
  • $ a? $ b:$ c :如果$ a返回$ b,則返回$ c( 三元運算符
  • $ a ?? $ c :與$ a相同? $ a:$ c( null合併運算符 - 需要PHP> = 7)

算術運算符:

  • - $ a :相反$ a。
  • $ a + $ b :$ a和$ b的總和。
  • $ a - $ b :$ a和$ b的差異。
  • $ a * $ b :$ a和$ b的乘積。
  • $ a / $ b :$ a和$ b的商數。
  • $ a%$ b$ a的剩餘除以$ b。
  • $ a ** $ b :將$ a提高到$ b '次冪的結果(在PHP 5.6中引入)

遞增/遞減運算符:

  • ++ $ a :將$ a遞增1,然後返回$ a。
  • $ a ++ :返回$ a,然後將$ a遞增1。
  • - $ a :將$ a減1,然後返回$ a。
  • $ a-- :返回$ a,然後將$ a減1。

按位運算符:

  • $ a和$ b :設置$ a和$ b中設置的位。
  • $ a | $ b :設置以$ a或$ b設置的位。
  • $ a ^ $ b :設置$ a或$ b但不是兩者都設置的位。
  • 〜$ a :未設置$ a中設置的位,反之亦然。
  • $ a << $ b :向左移動$ a $ b步的位(每一步意味著“乘以2”)
  • $ a >> $ b :將$ a $ b步的位移到右邊(每一步意味著“除以2”)

字符串運算符:

  • $ a。 $ b :$ a和$ b的連接。

數組運算符:

  • $ a + $ b :$ a和$ b的聯盟。
  • $ a == $ b :如果$ a和$ b具有相同的鍵/值對,則為TRUE。
  • $ a === $ b :如果$ a和$ b具有相同順序和相同類型的相同鍵/值對,則為TRUE。
  • $ a!= $ b :如果$ a不等於$ b,則為TRUE。
  • $ a <> $ b :如果$ a不等於$ b,則為TRUE。
  • $ a!== $ b :如果$ a與$ b不同,則為TRUE。

分配運營商:

  • $ a = $ b$ b的值分配給$ a
  • $ a + = $ b :與$ a = $ a + $ b相同
  • $ a - = $ b :與$ a = $ a - $ b相同
  • $ a * = $ b :與$ a = $ a * $ b相同
  • $ a / = $ b :與$ a = $ a / $ b相同
  • $ a%= $ b :與$ a = $ a%$ b相同
  • $ a ** = $ b :與$ a = $ a ** $ b相同
  • $ a。= $ b :與$ a = $ a相同。 $ b
  • $ a&= $ b :與$ a = $ a和$ b相同
  • $ a | = $ b :與$ a = $ a |相同 $ b
  • $ a ^ = $ b :與$ a = $ a ^ $ b相同
  • $ a << = $ b :與$ a = $ a << $ b相同
  • $ a >> = $ b :與$ a = $ a >> $ b相同

注意

and operator和or運算符的優先級低於賦值運算符=

這意味著$a = true and false; 相當於($a = true) and false

在大多數情況下,您可能希望使用&&|| ,其行為方式以C,Java或JavaScript等語言為基礎。







空結合運算符(??)

在PHP 7.0中添加了此運算符,用於需要將三元運算符與isset()結合使用的常見情況。 它返回第一個操作數(如果存在且不為NULL ; 否則返回第二個操作數。

<?php
// Fetches the value of $_GET['user'] and returns 'nobody'
// if it does not exist.
$username = $_GET['user'] ?? 'nobody';
// This is equivalent to:
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';

// Coalescing can be chained: this will return the first
// defined value out of $_GET['user'], $_POST['user'], and
// 'nobody'.
$username = $_GET['user'] ?? $_POST['user'] ?? 'nobody';
?>



問題

PHP中的“&”是什麼意思?

PHP“&”運算符

一旦我們習慣了,生活會更輕鬆..(仔細查看下面的例子)

通常檢查設置在$ a和$ b中的位。

你有沒有註意到這些電話如何運作?

   error_reporting(E_ERROR | E_WARNING | E_PARSE);
    error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
    error_reporting(E_ALL & ~E_NOTICE);
    error_reporting(E_ALL);

所以上面的所有內容都是按位運算符和位的遊戲。

其中一個有用的例子是簡單的配置,如下面給出的,所以一個整數字段可以為你存儲數千個組合。

大多數人已經閱讀過這些文檔,但沒有說明這些按位運算符的實際用例。

示例你會愛

<?php

class Config {

    // our constants must be 1,2,4,8,16,32,64 ....so on
    const TYPE_CAT=1;
    const TYPE_DOG=2;
    const TYPE_LION=4;
    const TYPE_RAT=8;
    const TYPE_BIRD=16;
    const TYPE_ALL=31;

    private $config;

    public function __construct($config){
        $this->config=$config;

        if($this->is(Config::TYPE_CAT)){
            echo 'cat ';
        }
        if($this->is(Config::TYPE_DOG)){
            echo 'dog ';
        }
        if($this->is(Config::TYPE_RAT)){
            echo 'rat ';
        }
        if($this->is(Config::TYPE_LION)){
            echo 'lion ';
        }
        if($this->is(Config::TYPE_BIRD)){
            echo 'bird ';
        }
        echo "\n";
    }

    private function is($value){
        return $this->config & $value;
    }
}

new Config(Config::TYPE_ALL);
// cat dog rat lion bird
new Config(Config::TYPE_BIRD);
//bird
new Config(Config::TYPE_BIRD | Config::TYPE_DOG);
//dog bird
new Config(Config::TYPE_ALL & ~Config::TYPE_DOG & ~Config::TYPE_CAT);
//rat lion bird



==用於檢查相等性而不考慮可變數據類型

===用於檢查平等兩個變量值*和**數據類型

$a = 5

  1. if ($a == 5) - 將評估為真

  2. if ($a == '5') - 將評估為true,因為在比較這兩個值時,php會在內部將該字符串值轉換為整數,然後比較這兩個值

  3. if ($a === 5) - 將評估為真

  4. if ($a === '5') - 將評估為false,因為value為5,但此值5不是整數。






Related