0%

标记、注释、运算符、表达式、变量

PHP语言标记

  • <?php开始?>结束标记是标准风格,这是PHP推荐使用的标记风格。
  • <script language="php">开始和</script>结束是长风格标记,这种标记最长,总是可用的,但我们并不常用。
  • <?开始和以?>结束标记是简短风格的标记,是最简单的,但是系统管理员偶尔会禁用掉它,因为它会干扰XML文档的声明。只用通过php.ini配置文件中的指令short_open_tag打开后就可以使用。
  • <%开始和以%>结束标记是ASP风格的标记,可以在php.ini配置文件设定中启用了asp_tags选项就可以使用它(默认是禁用的),习惯了ASP风格的可以使用它。

PHP程序注释

PHP支持C、C++和Shell脚本风格的注释,如下:

1
2
3
//... ...	单行注释
/* ... ... */ 多行注释 (注意:不能嵌套)
# ... ... 脚本注释

PHP中的运算符

运算符是可以通过给出的一或多个值(用编程行话来说,表达式)来产生另一个值(因而整个结构成为一个表达式)的东西。所以可以认为函数或任何会返回一个值(例如 print)的结构是运算符,而那些没有返回值的(例如 echo)是别的东西。

有三种类型的运算符:

  • 一元运算符:只运算一个值,例如 !(取反运算符)或 ++(加一运算符)。
  • 二元运算符:有两个操作数,PHP支持的大多数运算符都是这种。
  • 三元运算符? :。它应该被用来根据一个表达式在另两个表达式中选择一个,而不是用来在两个语句或者程序路线中选择。把整个三元表达式放在扩号里是个很好的主意。

算术运算符

运算符 意义 示例 结果
+ 加法运算 $a+$b $a+$b的和
- 减法/取负运算 $a-$b $a和$b的差
* 乘法运算 $a*$b $a和$b的积
/ 除法运算 $a/$b $a和$b的商
% 求余运算符(取模运算) $a%$b $a和$b的余数
++ 累加1 $a++或++$a $a的值加1
-- 递减1 $a--或--$a $a的值减1

字符串运算符

有两个字符串运算符:

  • .连接运算符:返回其左右参数连接后的字符串
  • .=连接赋值运算符:将右边参数附加到左边的参数
    1
    2
    3
    4
    5
    $a = "Hello ";
    $b = $a . “World!”; // 现在$b的值: Hello World!

    $a = "Hello ";
    $a .= “World!”; // 现在$a的值: Hello World!

    赋值运算符

    基本的赋值运算符是=。一开始可能会以为它是“等于”,其实不是的。它实际上意味着把右边表达式的值赋给左边的运算数。
运算符 意义 示例
= 将一个值或表达式的结果赋给变量 $x=3
+= 将变量与所赋的值相加后的结果赋给该变量 $x+=3等价于$x=$x+3
-= 将变量与所赋的值相减后的结果赋给该变量 $x-=3等价于$x=$x-3
*= 将变量与所赋的值相乘后的结果赋给该变量 $x*=3等价于$x=$x*3
/= 将变量与所赋的值相除后的结果赋给该变量 $x/=3等价于$x=$x/3
%= 将变量与所赋的值求模后的结果赋给该变量 $x%=3等价于$x=$x%3
.= 将变量与所赋的值相连后的结果赋给该变量 $x.=”H”等价于$x=$x.“H”

比较运算符

运算符 描述 说明 示例
> 大于 当左边大于右边时返回true,否则返回false $a>$b
< 小于 当左边小于右边时返回true,否则返回false $a<$b
>= 大于等于 当左边大于等于右边时返回true,否则false $a>=$b
<= 小于等于 当左边小于等于右边时返回true,否则false $a<=$b
== 等于 两边操作数的值相等时返回true,否则false $a==$b
=== 全等于 两边值相等并且类型相等返回true,否则false $a===$b
<>或!= 不等于 两边值不等时返回true,否则返回false $a<>$b 或 $a!=$b
!== 非全等于 两边值与类型都相同时返回false,否则true $a!==$b
1
2
3
4
var_dump(9 > 6);    
//如果 9大于6 它就返回true 否则就返回false
var_dump(9 === '9')
// 全等于 一定要两种都相同 第一种就是值相同 第二种就是类型相同

逻辑运算符

运算符 描述 说明 示例
and或&& 逻辑与 当两边操作数都为true时,返回true,否则返回false $a and $b 或 $a && $b
or或|| 逻辑或 当两边操作数都为false时,返回false,否则返回true $a or $b 或 $a || $b
not或! 逻辑非 当操作数为true时返回false,否则返回true not $b 或 !$b
xor 逻辑异或 当两边操作数只有一个为true时,返回true,否则返回false $a xor $b
1
2
3
4
5
6
7
8
var_dump(true && false);
//判断两边是否为真 如果为真那么就返回true 否则就返回false
var_dump(true || false);
//只要有一方为真 那么都为真 都为false时候就为 false
var_dump(!false);
//取反
var_dump(true xor false);
//逻辑异或

位运算符

运算符 描述 说明 示例
& 按位与 只有参与运算的两位都为1时,运算结果才为1,否则为0. $a & $b
| 按位或 只有参与运算的两位都为0时,运算结果才为0,否则为1. $a | $b
^ 按位异或 只有参与运算的两位不同,运算结果才为1,否则为0. ^$b
~ 按位非 将用二进制表示的操作数中的1变成0,0变成1. ~$a
<< 左移 将左边的操作数在内存中的二进制数据右移右边操作数指定的位数,右边移空的部分补上0 $a<<$b
>> 右移 将左边的操作数在内存中的二进制数据左移右边操作数指定的位数,左边移空的部分补上0 $a>>$b
1
var_dump(true & false);

其他运算符

运算符 描述 示例
? : 三元运算符,可以提供简单的逻辑判断。 $a<$b?$c=1:$c=0
`` 反引号(``)是执行运算符,PHP将尝试将反引号中的内容作外壳命令来执行,并将其输入信息返回 $a=`ls -al`
@ 错误控制运算符,当将其放置在一个PHP表达式之前,该表达式可能产生的任何错误信息都被忽略掉。 @表达式
=> 数组下标指定符号,通过此符号指定数组的键与值。 键=>值
-> 对象成员访问符号,访问对象中的成员属性或成员方法。 对象->成员
instanceof 类型运算符,用来测定一个给定的对象是否来自指定的对象类。 对象instanceof类名
1
2
3
4
5
6
var_dump(false ? '1' : '2');
$a=`ls -al`
var_dump(@$_GET['id']);
$info = array('key'=>'1');
$info = new Object();
$info->one();

运算符的优先级

优先级 结合方向 运算符 附加信息
1 无结合 clone、new clone 和 new
2 从右向左 ** 算术运算符
3 从右向左 ++、–、~、(int)、(float)、(string)、(array)、(object)、(bool)、@ 类型、递增/递减、错误控制
4 无结合 instanceof 类型
5 从右向左 ! 逻辑运算符
6 从左向右 *、/、% 算术运算符
7 从左向右 +、-、. 算术运算符和字符串运算符
8 从左向右 <<、>> 位运算符
9 无结合 <、<=、>、>= 比较运算符
10 无结合 ==、!=、===、!==、<>、<=> 比较运算符
11 从左向右 & 位运算符和引用
12 从左向右 ^ 位运算符
13 从左向右 | 位运算符
14 从左向右 && 逻辑运算符
15 从左向右 || 逻辑运算符
16 从右向左 ?? null 合并运算符
17 从左向右 ? : 三元运算符
18 从右向左 =、+=、-=、*=、**=、/=、.=、%=、&=、|=、^=、<<=、>>= 赋值运算符
19 从左向右 and 逻辑运算符
20 从左向右 xor 逻辑运算符
21 从左向右 or 逻辑运算符

表达式

  1. 表达式是 PHP 最重要的基石。在 PHP 中,几乎所写的任何东西都是一个表达式。简单但却最精确的定义一个表达式的方式就是任何有值的东西
  2. 最基本的表达式形式是常量和变量。当键入$a = 5
  3. 稍微复杂的表达式例子就是函数。
  4. 其他还有运算符与操作数构成的也成表达式。如:比较表达式$a>5$a==5

可变变量

有时候使用可变变量名是很方便的。就是说,一个可变变量获取了一个普通变量的值作为这个可变变量的变量名。 例如:

1
2
3
4
$a = 'hello';			//普通变量
$$a = 'world'; //可变变量
echo "$a ${$a}"; //输出:hello world
echo "$a $hello"; //输出:hello world

变量的引用赋值

  1. 引用操作符&可以在关联赋值中使用,就像一个别名,使得变量都指向了内存的相同地址。
  2. 通过unset($a)重置变量与内存的关联
    1
    2
    3
    4
    5
    $a=5;
    $b=&$a;
    echo $b; //输出5
    $a=7;
    echo $b; //输出7