Reference — What does this symbol mean in PHP?
这是一组关于PHP语法不时出现的问题。这也是一个社区wiki,因此邀请每个人参与维护此列表。
为什么会这样?过去很难找到有关运算符和其他语法标记的问题。1主要的想法是在堆栈溢出时有到现有问题的链接,因此我们更容易引用它们,而不是从PHP手册中复制内容。
注意:自2013年1月起,堆栈溢出支持特殊字符。只需用引号括住搜索词,例如
如果有人因为你问了这样一个问题而在这里指出你,请在下面找到具体的语法。链接到PHP手册的页面以及链接的问题很可能会回答您的问题。如果是这样,我们鼓励你对答案投赞成票。此列表并不能代替其他人提供的帮助。
名单如果您的特定令牌没有在下面列出,您可以在解析器令牌列表中找到它。
- 用一个和号启动一个PHP函数意味着什么?
- 了解php&;(和、位和)运算符
- php"&;"运算符
- PHP中&;和&;的区别
- 在PHP中,"&;"是什么意思?
- 在这种情况下,"&;"是什么意思?
- 在PHP中"&;sign"是什么意思?
- 这个签名在PHP中的含义是什么?
- 在PHP函数中,"&;运算符是如何工作的?
- 在PHP中&in&2意味着什么?
- 什么时候应该使用位运算符?
- 有没有必要在一个物体前面使用和号?(&美元)
- php中的引用赋值运算符,=&;
- php中的"=&;"和"&;="运算符是什么意思?
- "&;="和"=amp;"运算符的作用是什么?
- php中的=&;是什么意思?
- php中的"=&;"和"&;="运算符是什么意思?
- "&;="和"=amp;"运算符的作用是什么?
- '和'vs'&;'作为运算符
- PHP中&;和&;的区别
- php中的"and"和"&;&;"运算符有什么区别吗?
- php-和/或关键字
- 百分比符号在PHP中是什么意思?
- 什么是php运算符%以及如何在实际示例中使用它?
- 双不!!)PHP中的运算符
- PHP中@符号的用法是什么?
- php中变量名前的"at"符号:@$u post
- PHP函数和@函数
- 我应该在PHP代码中使用@?
- 什么是PHP运算符"?还有":"打过电话,他们怎么办?
- ?:php中的operator("elvis operator")。
- 我在哪里可以读到用"?"完成的条件?和":"(冒号)?
- 使用PHP 5.3?操作员
- C的空合并运算符(?在PHP中
- 可为空的返回类型声明
控制结构的可选语法,三元运算符
- php中的":"是什么?
- 在PHP中":"是什么意思?
- 两个冒号在PHP中是什么意思?
- php标记名t檓paamayim檓nekudotayim的意思是什么?
- PHP中的::(双冒号)和->(箭头)有什么区别?
- PHP中的后期静态绑定到底是什么?
- 静态::StaticFunctionName())
- 意外的t paamayim nekudotayim,需要t s分隔符
- PHP中的反斜杠——它是什么意思?
- 在php(5.3+)中,(反斜杠)做什么?
- 调用了什么"->"php运算符,当大声读取代码时,该如何说?
- 在PHP中,我们在哪里使用对象操作符"->"。
- PHP中的::(双冒号)和->(箭头)有什么区别?
- PHP语法$var1->var2是什么意思?
- 在PHP中"->"是什么意思/指代?
incrementing / decrementing算子
1 2 3 4 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. |
这些变量可以去之前或后。
如果放在变量的增量/减量操作,是做的第一,然后返回的结果是可变的。如果把变量的变量后,返回的是第一,然后增量/减量操作是这样做的。
例如:
1 2 3 4 5 | $apples = 10; for ($i = 0; $i < 10; ++$i) { echo 'I have ' . $apples-- ." apples. I just ate one. "; } |
现场实例
以上是用在
前位的增量是因为它真的很小。increments后的变量和"收益"的结果。扩展后的增量复制的特殊变量,因变量的第一个值后,只有第一个变量的值是用在与第二,replaces’s。
但是,你必须使用
你也可以在PHP:增量快报
1 2 3 4 | $i ="a"; while ($i <"c") { echo $i++; } |
下一步是一
Note that character variables can be incremented but not decremented and even so only plain ASCII characters (a-z and A-Z) are supported.
职位:堆栈溢出
- 理解incrementing
位运算符
有什么问题?位是1或0的表示。基本上关闭(0)和打开(1)
字节是什么?一个字节由8位组成,一个字节的最高值是255,这意味着每个位都被设置好了。我们来看看为什么一个字节的最大值是255。
1 2 3 4 5 | ------------------------------------------- | 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"运算符:1 2 3 | $a = 9; $b = 10; echo $a & $b; |
这将输出数字8。为什么?好吧,让我们看看使用我们的表示例。
1 2 3 4 5 6 7 8 9 10 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| 0| 0| ------------------------------------------- |
所以从表中可以看到它们共享的唯一位是8位。
第二实例
1 2 3 4 5 | $a = 36; $b = 103; echo $a & $b; // This would output the number 36. $a = 00100100 $b = 01100111 |
这两个共享位是32和4,加在一起时返回36。
"或"运算符:1 2 3 | $a = 9; $b = 10; echo $a | $b; |
这将输出数字11。为什么?
1 2 3 4 5 6 7 8 9 10 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。
字母名称0
The underscore character''s in EDOCX1 commercial is an alias to the EDOCX1.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 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" |
飞船操作员
运算符的结果是以下整数表达式:
- 当两个操作数相等时
- 当左操作数小于右操作数时,小于
0 。 - 当左边的操作数大于右边的操作数时,大于
0 。
例如
1 2 3 | 1 <=> 1; // 0 1 <=> 2; // -1 2 <=> 1; // 1 |
使用此运算符的一个很好的实际应用是在比较类型回调中,该回调根据两个值之间的三向比较预期返回零、负或正整数。传递给
1 2 3 4 5 6 7 8 9 10 11 | $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开始,你就可以写…
1 2 3 4 5 |
魔法常数:尽管这些不仅是象征,而且是这个象征家族的重要组成部分。有八个神奇的常量,它们根据使用位置而变化。
来源
类型算子
1 2 3 4 5 6 |
上面的示例将输出:
1 2 | bool(true) bool(false) |
原因:上面的示例
1 2 3 4 5 6 |
上面的示例将输出:
1 2 | bool(true) bool(true) |
克隆示例
1 2 3 4 5 6 |
上面的示例将输出:
1 2 | bool(true) bool(true) |
PHP中的运算符概述:逻辑运算符:
- $A&;$B:如果$A和$B都为真,则为真。
- $A$B:如果$A或$B为真,则为真。
- $A XOR$B:如果$A或$B为真,则为真,但不能同时为真。
- !$A:如果$A不正确,则为真。
- $A和$B:如果$A和$B都是真的,则为真。
- $A或$B:如果$A或$B为真,则为真。
比较运算符:
- $A=$B:如果类型杂耍后$A等于$B,则为真。
- $A==$B:如果$A等于$B,则为真,它们属于同一类型。
- 一元!=$B:如果类型杂耍后$A不等于$B,则为真。
- $A<>$B:如果类型杂耍后$A不等于$B,则为真。
- 一元!==$B:如果$A不等于$B,或者它们不是同一类型,则为真。
- $A<$B:如果$A严格小于$B,则为真。
- $A>B:如果$A严格大于$B,则为真。
- $A<=$B:如果$A小于或等于$B,则为真。
- $A>=$B:如果$A大于或等于$B,则为真。
- $A<=>$B:当$A分别小于、等于或大于$B时小于、等于或大于零的整数。从php 7开始提供。
- 一美元?$B:$C:如果$A返回$B,否则返回$C(三元运算符)
- 一美元??$C:和$A一样?$A:$C(空合并运算符-需要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递增一,然后返回$A。
- $A++:返回$A,然后将$A递增一。
- --$A:将$A减少一,然后返回$A。
- $A-:返回$A,然后将$A递减一。
按位运算符:
- $A&;$B:设置在$A和$B中的位。
- $A$B:设置在$A或$B中的位。
- $A^$B:在$A或$B中设置但不是同时设置的位。
- ~$A:在$A中设置的位没有设置,反之亦然。
- $A<<$B:将$A$B步的位向左移动(每一步表示"乘以2")。
- $A>>$B:将$A$B步的位右移(每一步表示"除以2")。
字符串运算符:
- 美元。$B:A和$B的串联。
数组运算符:
- $A+$B:A和$B的结合。
- $A=$B:如果$A和$B具有相同的键/值对,则为真。
- $A==$B:如果$A和$B具有相同顺序和相同类型的相同键/值对,则为真。
- 一元!=$B:如果$A不等于$B,则为真。
- $A<>$B:如果$A不等于$B,则为真。
- 一元!==$B:如果$A与$B不相同,则为真。
分配运算符:
- $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相同。美元
- $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相同
注释
这意味着
在大多数情况下,您可能希望使用EDCOX1、5和EDCOX1(6),其行为方式如C语言、Java语言或JavaScript。
飞船操作员
整数、浮点数、字符串、数组和对象,用于变量的三向比较。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | // Integers echo 10 <=> 10; // 0 echo 10 <=> 20; // -1 echo 20 <=> 10; // 1 // Floats echo 1.5 <=> 1.5; // 0 echo 1.5 <=> 2.5; // -1 echo 2.5 <=> 1.5; // 1 // Strings echo"a" <=>"a"; // 0 echo"a" <=>"b"; // -1 echo"b" <=>"a"; // 1 // Comparison is case-sensitive echo"B" <=>"a"; // -1 echo"a" <=>"aa"; // -1 echo"zz" <=>"aa"; // 1 // Arrays echo [] <=> []; // 0 echo [1, 2, 3] <=> [1, 2, 3]; // 0 echo [1, 2, 3] <=> []; // 1 echo [1, 2, 3] <=> [1, 2, 1]; // 1 echo [1, 2, 3] <=> [1, 2, 4]; // -1 // Objects $a = (object) ["a" =>"b"]; $b = (object) ["a" =>"b"]; echo $a <=> $b; // 0 $a = (object) ["a" =>"b"]; $b = (object) ["a" =>"c"]; echo $a <=> $b; // -1 $a = (object) ["a" =>"c"]; $b = (object) ["a" =>"b"]; echo $a <=> $b; // 1 // only values are compared $a = (object) ["a" =>"b"]; $b = (object) ["b" =>"b"]; echo $a <=> $b; // 1 |
- 块/卷曲的卷曲的牙套,牙套,好吗?
- 卷曲的牙套,在PHP中的字符串
- PHP中的数组notation牙套,卷曲的
和一些关于最后的话后 </P >
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | $x[4] = 'd'; // it works $x{4} = 'd'; // it works $echo $x[4]; // it works $echo $x{4}; // it works $x[] = 'e'; // it works $x{} = 'e'; // does not work $x = [1, 2]; // it works $x = {1, 2}; // does not work echo"${x[4]}"; // it works echo"${x{4}}"; // does not work echo"{$x[4]}"; // it works echo"{$x{4}}"; // it works |
PHP字符串:PHP字符串可以用四种方式指定,而不仅仅是两种方式:
1)单引号字符串:
1 | $string = 'This is my string'; // print This is my string |
2)双引号字符串:
1 2 3 | $str = 'string'; $string ="This is my $str"; // print This is my string |
3)Heredoc:
1 2 3 | $string = <<<EOD This is my string EOD; // print This is my string |
4)nowdoc(从php 5.3.0开始):
1 2 3 | $string = <<<'END_OF_STRING' This is my string END_OF_STRING; // print This is my string |
空合并运算符(??)
在php 7.0中添加了该运算符,用于需要与
1 2 3 4 5 6 7 8 9 10 11 12 | <?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中)时,首先想到的是类似于:
1 2 3 4 5 6 7 8 | $myArray1 = array(2016,"hello", 33);//option 1 $myArray2 = [2016,"hello", 33];//option 2 $myArray3 = [];//option 3 $myArray3[] = 2016; $myArray3[] ="hello"; $myArray3[] = 33; |
如果我们想在代码的后面部分调用数组,我们可以这样做:
1 2 3 | echo $myArray1[1];// output: hello echo $myArray2[1];// output: hello echo $myArray3[1];// output: hello |
到现在为止,一直都还不错。然而,作为人类,我们可能会发现很难记住数组的索引
差异(顺序数组和关联数组之间):
在关联数组的声明过程中,不仅要包含要放入数组中的内容的
value ,而且还要放入在代码的后面部分调用数组时要使用的索引值(称为key )。声明时使用以下语法:"Key" =>"Value" 。当使用关联数组时,
key 值将被放置在数组的索引中,以检索所需的value 。
例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | $myArray1 = array( "Year" => 2016, "Greetings" =>"hello", "Integer_value" => 33);//option 1 $myArray2 = [ "Year" => 2016, "Greetings" =>"hello", "Integer_value" => 33];//option 2 $myArray3 = [];//option 3 $myArray3["Year"] = 2016; $myArray3["Greetings"] ="hello"; $myArray3["Integer_value"] = 33; |
现在,为了获得与以前相同的输出,将在数组索引中使用
1 2 3 | echo $myArray1["Greetings"];// output: hello echo $myArray2["Greetings"];// output: hello echo $myArray3["Greetings"];// output: hello |
最后一点:
因此,从上面的例子中,很容易看出,在数组中的值启动期间,
问题:
在PHP中,"&;"是什么意思?
php"&;"运算符一旦我们习惯了它,生活就会变得更容易。(请仔细查看下面的示例)
&;通常检查设置在$A和$B中的位。
have you even noticed how these calls works?
1 2 3 4 | 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); |
所以在所有这些的背后是位运算符和位的游戏。
其中一个有用的例子是如下所示的简单配置,因此一个整型字段可以为您存储数千个组合框。
大多数人已经阅读了文档,但没有重新了解这些位运算符的实际使用情况。
你会喜欢的例子1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | <?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" "; } 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 |
空的coalesce运算符php
空合并运算符(??)已添加到php7中,用于需要与isset()一起使用三元的常见情况。如果第一个操作数存在,则返回它的第一个操作数,如果不为空,则返回它的第二个操作数,如以下示例:
1 2 3 | $username = $_GET['user'] ?? 'nobody'; // This is equivalent to: $username = isset($_GET['user']) ? $_GET['user'] : 'nobody'; |
coalesce空算子"??"(附加在PHP 7)
没有在一个catchiest name算子,但在7个PHP方便让我以为我coalesce零股年的例子。 >
在PHP 5,我们已经有了ternary算子,这测试的值,然后返回元素返回true如果这第二和第三:如果它不 >1 | echo $count ? $count : 10; // outputs 10 |
他也有shorthand论坛,这允许你跳过第二元素,如果这是同样的:我第一个回波计数一美元吗?10 / 10和输出; >
7我们在PHP additionally得到吗?显示控制器,而?比极端混乱的,是怎么会在一起的问题,而不是通常使用双标记允许我们到连锁在一起的字符串值。阅读从左到右键和值,第一个零是不存在的,那将是returned值。 >1 2 3 4 5 | // $a is not set $b = 16; echo $a ?? 2; // outputs 2 echo $a ?? $b ?? 7; // outputs 16 |
这是有用的用于建造一个或更多的优先值给所有用户输入来也许从他们现有的构型和safely落回到了,如果这是默认的构型是失踪。这是那种小但它的特征就是知道我会用我所有的PHP应用程序升级很快,我的7。 >
可为空的返回类型声明php 7添加了对返回类型声明的支持。与参数类型声明类似,返回类型声明指定将从函数返回的值的类型。返回类型声明的类型与参数类型声明的类型相同。
严格的类型对返回类型声明也有影响。在默认的弱模式下,如果返回的值还不属于该类型,则它们将被强制为正确的类型。在强模式下,返回值的类型必须正确,否则将引发类型错误。
从php 7.1.0开始,返回值可以通过在类型名称前加上问号(?)标记为可以为空。。这表示函数返回指定的类型或空值。
1 2 3 4 5 6 7 8 9 | <?php function get_item(): ?string { if (isset($_GET['item'])) { return $_GET['item']; } else { return null; } } ?> |
来源