[PHP中文手册][二.语言参考-表达式,运算符]

[PHP中文手册][二.语言参考-表达式,运算符]

标签(空格分隔): 未分类


表达式

  • PHP 支持全等运算符 ===(值和类型均相同)和非全等运算符 !==(值或者类型不同)。

基本跟C语言的描述一样

运算符优先级

算数运算符

  • 除法运算符总是返回浮点数。

    • 只有在下列情况例外:两个操作数都是整数(或字符串转换成的整数)并且正好能整除,这时它返回一个整数
  • 取模运算符的操作数在运算之前都会转换成整数(除去小数部分)。

  • 取模运算符 % 的结果和被除数的符号(正负号)相同。即 a a b 的结果和 $a 的符号相同。例如:

赋值运算符

  • 在 PHP 中普通的传值赋值行为有个例外就是碰到对象 object 时,在 PHP 5 中是以引用赋值的,除非明确使用了 clone 关键字来拷贝。

引用赋值

PHP 支持引用赋值,使用“$var = &$othervar;”语法。引用赋值意味着两个变量指向了同一个数据,没有拷贝任何东西。

  • 自 PHP 5 起,new运算符自动返回一个引用,因此再对 new的结果进行引用赋值在 PHP 5.3 以及以后版本中会发出一条 E_DEPRECATED 错误信息,在之前版本会发出一条 E_STRICT 错误信息。

以下代码产生警告

<?php
class C {}

/* The following line generates the following error message:
 * Deprecated: Assigning the return value of new by reference is deprecated in...
 */
$o = &new C;
?>

位运算符

跟C一样

比较运算符

PHP7提供两个运算

  • $a <=> $b:当$a小于、等于、大于$b时 分别返回一个小于、等于、大于0的integer 值。

  • $a ?? $b ?? $c:从左往右第一个存在且不为 NULL 的操作数。如果都没有定义且不为 NULL,则返回 NULL。PHP7开始提供。


<?php
var_dump(0 == "a"); // 0 == 0 -> true
var_dump("1" == "01"); // 1 == 1 -> true
var_dump("10" == "1e1"); // 10 == 10 -> true
var_dump(100 == "1e2"); // 100 == 100 -> true

switch ("a") {
case 0:
    echo "0";
    break;
case "a": // never reached because "a" is already matched with 0
    echo "a";
    break;
}
?>

image_1atgo5rap1k2r1fhs19c71165nku9.png-72.1kB

错误控制运算符

PHP 支持一个错误控制运算符:@。当将其放置在一个 PHP 表达式之前,该表达式可能产生的任何错误信息都被忽略掉。

  • 不太理解

执行运算

PHP 支持一个执行运算符:反引号(``)

  • PHP 将尝试将反引号中的内容作为外壳命令来执行,并将其输出信息返回
 <?php
    $output = `ls -al`;
    echo "<pre>$output</pre>";
    ?>
  • 使用反引号运算符" ' "的效果与函数 shell_exec() 相同。

  • 反引号运算符在激活了安全模式或者关闭了 shell_exec() 时是无效的。

递增/递减运算符

  • 基础跟C语言差不多

  • 在处理字符变量的算数运算时,PHP 沿袭了 Perl 的习惯,而非 C 的。

    • 例如,在 Perl 中 $a = 'Z'; $a++; 将把 $a变成’AA’,
    • 注意字符变量只能递增,不能递减,并且只支持纯字母(a-z 和 A-Z)。
    • 递增其他字符变量则无效,原字符串没有变化。
== Characters ==
X
Y
Z
AA
AB
AC
== Digits ==
A9
B0
B1
B2
B3
B4
A09
A10
A11
A12
A13
A14

逻辑运算符

image_1atiq38891cjmoap18e4ureie49.png-50.2kB

字符串运算符

一个. ,一个.=

数组运算符

image_1atiranm9babajk0vbgt1l40m.png-50.7kB

<?php

$a= array("a"=>"apple","b"=>"bnana");
$b= array("a"=>"pear","b"=>"strawberry","c"=>"cherry");
$c=$a+$b;
var_dump($c);
//array (size=3)
//'a' => string 'apple' (length=5)
//'b' => string 'bnana' (length=5)
//'c' => string 'cherry' (length=6)
$c = $b + $a;
var_dump($c);
//array (size=3)
// 'a' => string 'pear' (length=4)
// 'b' => string 'strawberry' (length=10)
// 'c' => string 'cherry' (length=6)
$a = array("apple", "banana");
$b = array(1 => "banana", "0" => "apple");

var_dump($a == $b); // bool(true)
var_dump($a === $b); // bool(false)

类型运算符

instanceof

instanceof 用于确定一个 PHP 变量是否属于某一类 class 的实例


<?php
class MyClass
{
}

class NotMyClass
{
}
$a = new MyClass;

var_dump($a instanceof MyClass);
var_dump($a instanceof NotMyClass);
?>

instanceof也可用于确定一个变量是不是实现了某个接口的对象的实例:


<?php
interface MyInterface
{
}

class MyClass implements MyInterface
{
}

$a = new MyClass;

var_dump($a instanceof MyClass);
var_dump($a instanceof MyInterface);
?>

instanceof 运算符是 PHP 5 引进的。在此之前用is_a(),但是后来 is_a() 被废弃而用 instanceof替代了。注意自 PHP 5.3.0 起,又恢复使用 is_a() 了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值