这是关于 PHP 语法时不时出现的问题的集合。这也是一个社区 Wiki,因此邀请每个人参与维护此列表。
过去很难找到有关运算符和其他语法标记的问题。 ¹
主要思想是提供 Stack Overflow 上现有问题的链接,这样我们就可以更轻松地引用它们,而不是复制 PHP 手册中的内容。
注意:自 2013 年 1 月起,Stack Overflow 开始支持特殊字符。只需用引号将搜索词括起来,例如[php]“==”与“===”
如果您因为问了这样的问题而被某人指向这里,请查找下面的特定语法。 PHP 手册的链接页面以及链接的问题可能会回答您的问题。如果是这样,我们鼓励您对答案进行投票。此列表不能替代其他人提供的帮助。
如果您的特定令牌未在下面列出,您可能会在解析器令牌列表中找到它。
&
位运算符或参考
=&
参考文献
&=
位运算符
&&
逻辑运算符
%
算术运算符
!!
逻辑运算符
@
错误控制运算符
?:
三元运算符
双问号
??
空合并运算符(自 PHP 7 起)
问号后跟类型声明
?string
?int
?array
?bool
?float
可空类型声明(自 PHP 7.1 起)
?->
问号后跟对象运算符是 NullSafe 运算符(自 PHP 8.0 起)
:
控制结构、三元运算符、返回类型声明的替代语法
::
范围解析运算符
命名空间
->
类和对象
=>
数组
^
位运算符
>>
位运算符
<<
位运算符
<<<
Heredoc 或 Nowdoc
=
赋值运算符
==
比较运算符
===
比较运算符
!==
比较运算符
!=
比较运算符
<>
比较运算符
<=>
比较运算符(自 PHP 7.0 起)
|
位运算符
||
逻辑运算符
~
位运算符
+
算术运算符、数组运算符
+=
和 -=
赋值运算符
++
和 --
递增/递减运算符
.=
赋值运算符
.
字符串运算符
,
函数参数
,
变量声明
$$
变量变量
`
执行运算符
<?=
短开放标签
[]
数组(自 PHP 5.4 起的短语法)
$var = []
空数组<?
开始和结束标签
..
双点字符范围
...
参数解包(自 PHP 5.6 起)
**
求幂(自 PHP 5.6 起)
# 一行 shell 式注释
#[]
属性(自 PHP 8 起)
P粉2983052662023-10-11 11:48:43
什么是一点?位代表 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 字节)
&
$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。
P粉3453027532023-10-11 00:19:04
递增/递减运算符< /p>
++
增量运算符
--
自减运算符
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.
它们可以位于变量之前或之后。
如果放在变量之前,则先对变量进行增减操作,然后返回结果。如果放在变量后面,首先返回该变量,然后进行递增/递减操作。
例如:
$apples = 10; for ($i = 0; $i < 10; ++$i) { echo 'I have ' . $apples-- . " apples. I just ate one.\n"; }
在上面的例子中使用了++$i
,因为它更快。 $i++
会有相同的结果。
预递增要快一点,因为它确实递增变量,然后“返回”结果。后增量创建一个特殊变量,将第一个变量的值复制到其中,并且仅在使用第一个变量后,将其值替换为第二个变量的值。
但是,您必须使用 $apples--
,因为首先您要显示当前的苹果数量,然后您要从中减去一个。
您还可以在 PHP 中递增字母:
$i = "a"; while ($i < "c") { echo $i++; }
一旦到达 z
,接下来就是 aa
,依此类推。
堆栈溢出帖子: