這是關(guān)于 PHP 語(yǔ)法時(shí)不時(shí)出現(xiàn)的問(wèn)題的集合。這也是一個(gè)社區(qū) Wiki,因此邀請(qǐng)每個(gè)人參與維護(hù)此列表。
過(guò)去很難找到有關(guān)運(yùn)算符和其他語(yǔ)法標(biāo)記的問(wèn)題。 1
主要思想是提供 Stack Overflow 上現(xiàn)有問(wèn)題的鏈接,這樣我們就可以更輕松地引用它們,而不是復(fù)制 PHP 手冊(cè)中的內(nèi)容。
注意:自 2013 年 1 月起,Stack Overflow 開(kāi)始支持特殊字符。只需用引號(hào)將搜索詞括起來(lái),例如[php]“==”與“===”
如果您因?yàn)閱?wèn)了這樣的問(wèn)題而被某人指向這里,請(qǐng)查找下面的特定語(yǔ)法。 PHP 手冊(cè)的鏈接頁(yè)面以及鏈接的問(wèn)題可能會(huì)回答您的問(wèn)題。如果是這樣,我們鼓勵(lì)您對(duì)答案進(jìn)行投票。此列表不能替代其他人提供的幫助。
如果您的特定令牌未在下面列出,您可能會(huì)在解析器令牌列表中找到它。
&
位運(yùn)算符或參考
=&
參考文獻(xiàn)
&=
位運(yùn)算符
&&
邏輯運(yùn)算符
%
算術(shù)運(yùn)算符
!!
邏輯運(yùn)算符
@
錯(cuò)誤控制運(yùn)算符
?:
三元運(yùn)算符
雙問(wèn)號(hào)
??
空合并運(yùn)算符(自 PHP 7 起)
問(wèn)號(hào)后跟類(lèi)型聲明
?string
?int
?array
?bool
?float
可空類(lèi)型聲明(自 PHP 7.1 起)
?->
問(wèn)號(hào)后跟對(duì)象運(yùn)算符是 NullSafe 運(yùn)算符(自 PHP 8.0 起)
:
控制結(jié)構(gòu)、三元運(yùn)算符、返回類(lèi)型聲明的替代語(yǔ)法
::
范圍解析運(yùn)算符
命名空間
->
類(lèi)和對(duì)象
=>
數(shù)組
^
位運(yùn)算符
>>
位運(yùn)算符
<<
位運(yùn)算符
<<<
Heredoc 或 Nowdoc
=
賦值運(yùn)算符
==
比較運(yùn)算符
===
比較運(yùn)算符
!==
比較運(yùn)算符
!=
比較運(yùn)算符
<>
比較運(yùn)算符
<=>
比較運(yùn)算符(自 PHP 7.0 起)
|
位運(yùn)算符
||
邏輯運(yùn)算符
~
位運(yùn)算符
+
算術(shù)運(yùn)算符、數(shù)組運(yùn)算符
+=
和 -=
賦值運(yùn)算符
++
和 --
遞增/遞減運(yùn)算符
.=
賦值運(yùn)算符
.
字符串運(yùn)算符
,
函數(shù)參數(shù)
,
變量聲明
$$
變量變量
`
執(zhí)行運(yùn)算符
<?=
短開(kāi)放標(biāo)簽
[]
數(shù)組(自 PHP 5.4 起的短語(yǔ)法)
$var = []
空數(shù)組<?
開(kāi)始和結(jié)束標(biāo)簽
..
雙點(diǎn)字符范圍
...
參數(shù)解包(自 PHP 5.6 起)
**
求冪(自 PHP 5.6 起)
# 一行 shell 式注釋
#[]
屬性(自 PHP 8 起)
什么是一點(diǎn)?位代表 1 或 0?;旧鲜?OFF(0) 和 ON(1)
什么是字節(jié)?一個(gè)字節(jié)由 8 位組成,一個(gè)字節(jié)的最高值為 255,這意味著每個(gè)位都被設(shè)置。我們將看看為什么一個(gè)字節(jié)的最大值是 255。
------------------------------------------- | 1 Byte ( 8 bits ) | ------------------------------------------- |Place Value | 128| 64| 32| 16| 8| 4| 2| 1| -------------------------------------------
這表示1個(gè)字節(jié)
1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 = 255(1 字節(jié))
&
$a = 9; $b = 10; echo $a & $b;
這將輸出數(shù)字 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 位。
第二個(gè)例子
$a = 36; $b = 103; echo $a & $b; // This would output the number 36. $a = 00100100 $b = 01100111
兩個(gè)共享位是 32 和 4,相加后返回 36。
|
$a = 9; $b = 10; echo $a | $b;
這將輸出數(shù)字 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| -------------------------------------------
您會(huì)注意到我們?cè)诘?8、2 和 1 列中設(shè)置了 3 個(gè)位。將這些相加:8+2+1=11。
++
增量運(yùn)算符
--
自減運(yùn)算符
Example Name Effect --------------------------------------------------------------------- ++$a Pre-increment Increments $a by one, then returns $a. $a++ Post-increment Returns $a, then increments $a by one. --$a Pre-decrement Decrements $a by one, then returns $a. $a-- Post-decrement Returns $a, then decrements $a by one.
它們可以位于變量之前或之后。
如果放在變量之前,則先對(duì)變量進(jìn)行增減操作,然后返回結(jié)果。如果放在變量后面,首先返回該變量,然后進(jìn)行遞增/遞減操作。
例如:
$apples = 10; for ($i = 0; $i在上面的例子中使用了
++$i
,因?yàn)樗臁?$i++
會(huì)有相同的結(jié)果。預(yù)遞增要快一點(diǎn),因?yàn)樗_實(shí)遞增變量,然后“返回”結(jié)果。后增量創(chuàng)建一個(gè)特殊變量,將第一個(gè)變量的值復(fù)制到其中,并且僅在使用第一個(gè)變量后,將其值替換為第二個(gè)變量的值。
但是,您必須使用
$apples--
,因?yàn)槭紫饶@示當(dāng)前的蘋(píng)果數(shù)量,然后您要從中減去一個(gè)。您還可以在 PHP 中遞增字母:
$i = "a"; while ($i一旦到達(dá)
z
,接下來(lái)就是aa
,依此類(lèi)推。
堆棧溢出帖子: