Date
Jul. 14th, 2024
 
2024年 6月 9日

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
I'm looking for a SOFTWARE PROJECT DIRECTOR / SOFTWARE R&D DIRECTOR position in a fresh and dynamic company. I would like to gain the right experience and extend my skills while working in great teams and big projects.
Feel free to contact me.
For more information, please view online résumé or download PDF
本人正在寻求任职 软件项目经理 / 软件技术经理 岗位的机会, 希望加⼊某个新鲜⽽充满活⼒的公司。
如有意向请随时 与我联系
更多信息请 查阅在线简历下载 PDF