热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

php运算符

 浮点数小数类型以及超过整型所能存储范围的整型(不保证精度),精度范围大概在15个有效数字左右浮点型定义两种方式:$f1.23;$ff1.23e10; 科学计数法浮点数保存的数据不

 

浮点数小数类型以及超过整型所能存储范围的整型(不保证精度),精度范围大概在15个有效数字左右

  浮点型定义两种方式:

    $f = 1.23;

    $ff = 1.23e10;  // 科学计数法

浮点数保存的数据不够精确,所以尽量不用来做比较判断

  

  整型超过自身存储的大小之后会用浮点型存储

 

布尔类型:两个值true(真) 和 false(假) ,通常用于判断比较

   NULL 不等于false

  php 运算符

 

-------------------------------------------------------------

运算符: operator 是一种将数据进行运算的特殊符号,

赋值运算符

  符号是 "=" 表示将右边的结果(可以是变量,数据,常量和其他均速出来的结果)保存到内存的某个位置,然后将位置的内存地址赋值给左侧的变量

 

算术运算符: 不能用0相除

    -$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 次方

 

比较运算符:比较两个数据的大小,或两个内容是否相同,返回的结果都是布尔类型:满足返回true,不满足返回false

  >  左边大于右边

  >=  左边大于等于右边

  <  左边小于右边

  <=  左边小于等于右边

  ==  相等

  !=  不相等

  ===  全等于,左边与右边相同:大小以及数据的类型都要相同 

  !==  不全等于,只有大小或者类型不同

php

var_dump(null == "");
var_dump(null == false);
var_dump(true > false);
var_dump(0 == "a");
var_dump("1" == "01");
var_dump("10" == "1e1");
var_dump(100 == "1e2");
var_dump([4,5] <[1,2,3]);
var_dump((object)"Test" > "Test");
var_dump((object)"Test" > [2,3]);

switch ("a") {
case 0:
    echo "0";
    break;
case "a": 
    echo "a";
    break;
}

从结果可以看出

  • null 或 String 和 string 比较时,将 null 转换为 "",进行数字或词汇比较
  • bool 或 null 和其他类型比较时,转换为 bool,FALSE
  • string,resource 或 number 相互比较时,将字符串或资源转换为数字,按普通数字比较
  • array 之间比较时,具有较少成员的数组较小
  • object 和其他类型比较时,object 总是更大
  • array 和其他类型比较时,array 总是更大,但是比对象小
  • switch 中第一个条件满足时,不会执行后面满足条件的语句

-----------------------------------------------------------

 

连接运算符

  .   就一个点,将两个字符串连接起来

  .=   符合运算,将左边的内容与右边的内容连接起来,然后重新赋值给左边的变量

    $a.=$b == $a = $a.$b

$b = "Hello ";
$b .= "There!"; //相当于 $b = $b. "There" ;

 

错误抑制符

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

php

$my_file = @file ('non_existent_file') or
    die ("Failed opening file: error was '$php_errormsg'");

$value = @$cache[$key];

    错误控制运算符只对表达式有效。对新手来说一个简单的规则就是:
      如果能从某处得到值,就能在它前面加上 \@ 运算符。例如,可以把它放在变量,函数和 include 调用,常量,等等之前。
    不能把它放在函数或类的定义之前,也不能用于条件结构例如 if 和 foreach 等。
    注意:目前的 \@ 错误控制运算符前缀甚至使导致脚本终止的严重错误的错误报告也失效。这意味着如果在某个不存在或者敲错了字母的函数调用前用了 \@ 来抑制错误信息,那脚本会没有任何迹象显示原因而死在那里。


----------

三目运算符 (简单的分支结构的缩写)

  语法格式:

    表达式1 ? 表达式2 : 表达式3

  运算:如表达式1成立,那么执行表达式2,否则执行表达式3

 

自操作运算符

  ++  在原来的值上+1

  --  在原来的值上-1

  ++$a 与 $a++ 结果一样但是过程不一样,++$a 是 先+1后赋值,$a++ 是先赋值后加1

 

  衍生符号

  +=   左边的结果与右边的结果相加然后赋值给左边的变量

  -=

  *=

  /=

  %=

如果进行除法或者取余运算,那么要考虑右边表达式的结果是否为0

-------------------------------------------------------

计算级码:计算机在实际存储数据的时候,采用的编码规则(二进制)

计算机码:源码,反码,和补码,数值本身最左边一位是用来充当符号位:整数位0,负数为1

源码:数据本身从十进制转换成二进制得到的结果

  正数:左边符号位为0(正数的源码,反码和补码就是源码本身)

  负数:左边符号位为1

反码:针对负数,符号位不变,其他位取反

补码:针对负数,反码+1

系统中存在两个0:+0 和 -0

  +0:00000000

  -0:00000000  源码

  取反:11111111

  补码:00000000

 

位运算

  取出计算机中最小的单位(位 bit)进行运算

    &  按位与,两个位都为1,结果为1,否则为0

    |  按位或,两个有一个为1,结果为1

    ~  按位非,一个如果为1则为1

    ^  按位异或,两个相同则为0,不同则为1

    <<  按位左移,整个位(32位),向左移动一位,右边补0

    >>  按位右移,整个位右移动一位,左边补号位对应内容(整数补0,负数补1)

 

--------------------------------------------------------------

逻辑运算

  与 &&   左边的条件与右边的条件同时成立(两边结果都为true)

  或 ||  左边的条件或者右边的条件只要有一个满足即可

  非 !  对已有条件进行取反,本身为true,取反结果就是 false

逻辑与和逻辑或有称之为断了运算:如果第一个表达式结果已经满足条件了,那么就不会运行逻辑运算符后面的表达式,所以尽可能把自己已知的结果放在表达式的前面。

 

    for ($i = 0;$i<100;$i++){
        if ($i%2==0 && $i%3==0){
            echo $i .'
'; } }

--------------------------------------------------------------

执行运算符
    PHP 支持一个执行运算符:反引号(``)。注意这不是单引号!PHP 将尝试将反引号中的内容作为外壳命令来执行,并将其输出信息返回(例如,可以赋给一个变量而不是简单地丢弃到标准输出)。

php
$output = `ls -al`;
echo "
$output
";

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

--------------------------------------------------------- php  7 信的运算符

组合比较符

  太空船操作符使用 <=> 表示,用于比较两个表达式。当 $a 小于、等于或大于 $b 时它分别返回-1、0或1。 比较的原则是沿用 PHP 的常规比较规则进行的。

php
// 整数
echo 1 <=> 1; // 0
echo 1 <=> 2; // -1
echo 2 <=> 1; // 1

// 浮点数
echo 1.5 <=> 1.5; // 0
echo 1.5 <=> 2.5; // -1
echo 2.5 <=> 1.5; // 1

// 字符串
echo "a" <=> "a"; // 0
echo "a" <=> "b"; // -1
echo "b" <=> "a"; // 1
?>

------------------------------------

NULL合并运算符

  NULL 合并运算符使用 ?? 表示,意味着如果 ?? 之前的变量存在且值不为 NULL,它就会返回自身的值,否则返回 ?? 后的操作数。

php

$username = $_GET['user'] ?? 'nobody';
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';

$username = $_GET['user'] ?? $_POST['user'] ?? 'nobody';

  合并运算符通常可用三元运算符作为替换,多个合并运算符的优先级从左到右一次执行。

 

 

......


推荐阅读
  • Java中包装类的设计原因以及操作方法
    本文主要介绍了Java中设计包装类的原因以及操作方法。在Java中,除了对象类型,还有八大基本类型,为了将基本类型转换成对象,Java引入了包装类。文章通过介绍包装类的定义和实现,解答了为什么需要包装类的问题,并提供了简单易用的操作方法。通过本文的学习,读者可以更好地理解和应用Java中的包装类。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • Android JSON基础,音视频开发进阶指南目录
    Array里面的对象数据是有序的,json字符串最外层是方括号的,方括号:[]解析jsonArray代码try{json字符串最外层是 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • 怎么在PHP项目中实现一个HTTP断点续传功能发布时间:2021-01-1916:26:06来源:亿速云阅读:96作者:Le ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • This article discusses the efficiency of using char str[] and char *str and whether there is any reason to prefer one over the other. It explains the difference between the two and provides an example to illustrate their usage. ... [详细]
author-avatar
奕殫的泪
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有