Date
Nov. 21st, 2024
 
2024年 10月 21日

Post: PHP Primer 013 : 运算符

PHP Primer 013 : 运算符

Published 12:01 Jan 22, 2012.

Created by @ezra. Categorized in #Programming, and tagged as #PHP.

Source format: Markdown

Table of Content

在 PHP 中加减乘除以及模运算由 +-*/% 表示,均为中缀二元运算符。

赋值运算符:

  • = : 表示将右侧表达式值赋给左侧的运算数。赋值后左侧值将是右侧值的拷贝。例如 $a = $b;

  • & : 引用,加上 & 后,在赋值时左侧运算数则会和右侧指向同一数据,共享一块内存。例如 $a = &$b;

<?php 
    $a = "meniny";
    echo $a;
    echo "\n";
    $b = $a;
    echo $b;
    echo "\n";
    $c = &$a;
    echo $c;
    echo "\n";
    $a = "MENINY";
    echo $c;
?>

类似的还有 +=-=*=/=%= 等,均为二元中缀运算符。

以及自增与自减运算符: ++--,均为一元后缀运算符。

PHP 也支持位运算:

  • & : 按位与

  • | : 按位或

  • ^ : 按位异或

  • ~ : 按位取反

  • << : 左移

  • >> : 右移

PHP 还提供了一些比较运算符,分别是:

  • == : 中缀二元运算符,左右两边相等(不包括类型)则返回 true

  • === : 中缀二元运算符,左右两边相等(包括类型)则返回 true

  • != : 中缀二元运算符,左右两边不等(不包括类型)则返回 true

  • <> : 中缀二元运算符,左右两边不等(不包括类型)则返回 true

  • !== : 中缀二元运算符,左右两边不等(包括类型)则返回 true

  • > : 中缀二元运算符,左边较大(不包括类型)则返回 true

  • >= : 中缀二元运算符,左右两边相等或左边较大(不包括类型)则返回 true

  • < : 中缀二元运算符,右边较大(不包括类型)则返回 true

  • <= : 中缀二元运算符,左右两边相等或右边较大(不包括类型)则返回 true

<?php 
    var_dump("123" == 123);
    var_dump("123" === 123);
    var_dump("123" != 123);
    var_dump("123" <> 123);
    var_dump("123" < 123);
    var_dump("123" > 123);
    var_dump("123" <= 123);
    var_dump("123" >= 123);
?>

此外 PHP 也提供了三元运算符 (?:),对于表达式 (expr1)?(expr2):(expr3),如果 expr1 的值为 true,则此表达式的值为 expr2,否则为 expr3;

<?php 
    var_dump(true ? "IS TRUE" : "NOT TRUE");
    var_dump(false ? "IS TRUE" : "NOT TRUE");
?>

当然,不能少了逻辑运算符:

  • and : 逻辑与,中缀二元运算符,两侧均为 true 则返回 true

  • && : 逻辑与,中缀二元运算符,两侧均为 true 则返回 true

  • or : 逻辑或,中缀二元运算符,某一侧为 true 则返回 true

  • || : 逻辑或,中缀二元运算符,某一侧为 true 则返回 true

  • xor : 逻辑异或,中缀二元运算符,两侧有且仅有一侧为 true 则返回 true

  • ! : 逻辑非,前缀一元运算符,右侧为 false 则返回 true

对于字符串,前面提到过可以使用 . 符号进行拼接,这里还要介绍另外一个 .= 运算符,用于将两侧内容进行拼接,举个栗子:

<?php 
    $a = "var a ";
    $b = "var b ";
    $c = $a.$b;
    $d = "var d ";
    $d .= $c;
    echo '$a:'.$a."\n";
    echo '$b:'.$b."\n";
    echo '%c=$a.$b:'.$c."\n";
    echo '%d.=$c:'.$d."\n";
?>

还有一个比较特殊的运算符: 错误控制运算符(@),对于一些可能会在运行过程中出错的表达式时,可以将@放置在该表达式之前忽略其产生的错误信息。如果启用 track_error 则这些错误信息会被存放在 $php_errormsg 中,但这个变量的值在每次出错时都会被覆盖掉。

注意:

  • 不能屏蔽解析错误的信息

  • 不能放在函数或类定义前

  • 不能用于条件控制结构

<?php 
    $connection = @mysql_connect("localhost","usr","pwd");
    echo $connection;
    echo $php_errormsg;
?>
Pinned Message
HOTODOGO
The Founder and CEO of Infeca Technology.
Developer, Designer, Blogger.
Big fan of Apple, Love of colour.
Feel free to contact me.
反曲点科技创始人和首席执行官。
开发、设计与写作皆为所长。
热爱苹果、钟情色彩。
随时恭候 垂询