这是一个关于 PHP 语法的问题集合。这也是社区 Wiki,因此邀请每个人参与维护此列表。
过去很难找到关于运算符和其他语法标记的问题.¹
主要思想是链接到 Stack Overflow 上的现有问题,因此我们更容易引用它们,而不是复制 PHP 手册中的内容。
¹ 注意:自 2013 年 1 月起,Stack Overflow 确实支持特殊字符 。只需用引号括起搜索词,例如[php] "==" vs "==="
如果您因为提出这样的问题而被某人指向此处,请在下面找到具体的语法。 PHP 手册的链接页面以及链接的问题可能会回答您的问题。如果是这样,我们鼓励您提出答案。此列表并不代替其他人提供的帮助。
如果您的特定令牌未在下面列出,您可能会在 “ 解析器令牌列表” 中找到它。
=&
参考文献
&=
按位运算符
&&
逻辑运算符
%
算术运算符
!!
逻辑运算符
@
错误控制操作符
?:
三元运算符
??
Null Coalesce 运算符 (自 PHP 7 起)
::
范围解析运算符
\
命名空间
->
类和对象
=>
数组
^
按位运算符
>>
按位运算符
<<
按位运算符
<<<
Heredoc 或 Nowdoc
=
分配运营商
==
比较运算符
===
比较运算符
!==
比较运算符
!=
比较运算符
<>
比较运算符
<=>
比较运算符 (自 PHP 7.0)
|
按位运算符
||
逻辑运算符
~
按位运算符
+=
和-=
赋值运算符
++
和--
递增 / 递减运算符
.=
分配运营商
.
字符串运算符
,
功能参数
,
变量声明
$$
变量变量
`
执行运营商
<?=
短开标签
[]
数组 (PHP 5.4 以来的短语法)
$var = []
空数组 <?
打开和关闭标签
...
参数解压缩 (自 PHP 5.6 起)
**
Exponentiation (自 PHP 5.6 起)
++
增量运算符
--
递减运算符
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
,依此类推。
请注意,字符变量可以递增但不递减,即使只支持纯 ASCII 字符(az 和 AZ)。
Stack Overflow 帖子:
有点什么?位是 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。
_()
的下划线字符 “_” 是gettext()
函数的别名。