PHP入门之类型与运算符(一)
前言
PHP对于大部分人来说,是比较容易入门的。笔者也是刚学习不久,所以就把自己学习的基础知识进行总结和整理。第一部分是类型与运算符。如果你想学习PHP,可以参考PHP学习手册学习,任何一本教学资料也没有PHP学习手册讲的详细。传送门(提取码2dq2):PHP学习手册
类型
PHP支持8种原始类型,包括boolean(布尔型)、integer(整型)、float(浮点型,也称作 double)、string(字符串)、array(数组)、object(对象)、resource(资源)、NULL(无类型),还有三种伪类型。这里主要讲解前四种标量类型。PHP不用提前定义数据类型,它会自己识别。
整型
整型数的字长和平台有关,尽管通常最大值是大约二十亿(32 位有符号)。64 位平台下的最大值通常是大约 9E18。PHP 不支持无符号整数。Integer 值的字长可以用常量 PHP_INT_SIZE来表示,自 PHP 4.4.0 和 PHP 5.0.5后,最大值可以用常量 PHP_INT_MAX 来表示。可以用下面的代码证明一下。
<?php
$a=12345;
echo "a的值为".$a;
echo '</br>';
echo "字节为".PHP_INT_SIZE;
echo '</br>';
echo "最大值为".PHP_INT_MAX;
echo '</br>';
echo var_dump($a);
?>
运行结果为:

如果给定的一个整数,溢出了整数的范围,将直接会解释成float。
布尔型
布尔型细节
最简单的类型,true和false代表真和假。
当转换为 布尔 时,以下值被认为是 false:
• 布尔值 false 本身
• 整型值 0(零)
• 浮点型值 0.0(零)
• 空字符串,以及字符串 "0"
• 不包括任何元素的数组
• 不包括任何成员变量的对象(仅 PHP 4.0 适用)
• 特殊类型 NULL(包括尚未赋值的变量)
• 从空标记生成的 SimpleXML 对象
除了上面那些,其他的所有值都会被认为是true。
浮点型
精度为14个字节,从左边不是零的一个开始算起。
比如、
$a=0.123444555666666666;
echo "a的值为".$a;
输出的值为:a的值为0.12344455566667
当到第14位数时,它会自动四舍五入。
字符型
字符型最大可以达到 2GB。
需要注意的一点是区分单引号和双引号。用双引号定义的字符串最重要的特征是变量会被解析。举个例子。
$b=123;
echo "hello$b";
echo 'hello$b';     #结果为 hello123  hello$b
运算符
运算符是可以通过给出的一或多个值(用编程行话来说,表达式)来产生另一个值(因而整个结构成为一个表达式)的东西。下面对几种常用的运算符进行详细说明。
递增/递减运算符
举个例子
$i=10;
$i=++$i;    # ++在前,先++然后在赋值。所以输出的结果为11.
$i=i++;    # ++在后,先赋值,然后在++。所以输出的值为10.  //这里注意的是,++和--的对象是变量!!比如$a=++3就是错的!!
echo 'i的值为'.$i
--i和i--同样的道理。
算术运算符
$a + $b 加法 $a 和 $b 的和。
$a - $b 减法 $a 和 $b 的差。
$a * $b 乘法 $a 和 $b 的积。
$a / $b 除法 $a 除以 $b 的商。
$a % $b 取模 $a 除以 $b 的余数。
这些就不举例子了。还有$a+、$a-、$a*、$a/、$a%、(左加、左减、左乘、左除、左取余)。
举个例子。
$a=10;
$a-=2;
echo 'a的值为'.$a;  #执行结果为:a的值为8  $a-=2就相当于$a=10-2;
比较运算符
$a == $b 等于 TRUE,如果类型转换后 $a 等于 $b。
$a === $b 全等 TRUE,如果 $a 等于 $b,并且它们的类型也相同。
$a != $b 不等 TRUE,如果类型转换后 $a 不等于 $b。
$a <> $b 不等 TRUE,如果类型转换后 $a 不等于 $b。
$a !== $b 不全等 TRUE,如果 $a 不等于 $b,或者它们的类型不同。
$a < $b 小与 TRUE,如果 $a 严格小于 $b。
$a > $b 大于 TRUE,如果 $a 严格大于 $b。
$a <= $b 小于等于 TRUE,如果 $a 小于或者等于 $b。
$a >= $b 大于等于 TRUE,如果 $a 大于或者等于 $b。
$a <=> $b 结合比较运算符 当$a小于、等于、大于than $b时分别返回一个小于、等于、大于0的integer 值。 PHP7开始提供.
$a ?? $b ?? $c NULL 合并操作符 从左往右第一个存在且不为 NULL 的操作数。如果都没有定义且不为 NULL,则返回 NULL。PHP7开始提供
逻辑运算符
- $a and $b And(逻辑与) TRUE,如果 $a 和 $b 都为 TRUE。
- $a or $b Or(逻辑或) TRUE,如果 $a 或 $b 任一为 TRUE。
- $a xor $b Xor(逻辑异或) TRUE,如果 $a 或 $b 任一为 TRUE,但不同时是。
- ! $a Not(逻辑非) TRUE,如果 $a 不为 TRUE。
- $a && $b And(逻辑与) TRUE,如果 $a 和 $b 都为 TRUE。
- $a || $b Or(逻辑或) TRUE,如果 $a 或 $b 任一为 TRUE。
 and 和 &&都是逻辑与,区别是&&优先级高于and,and的优先级比赋值运算符还要低。
 举个例子。
$a= false&&true;
$b= true and false;
var_dump($a,$b);              #执行结果:bool(false) bool(true) $a=false$b=true
if ($a==false){               #因为,and的优先级低于“=”所以$b先进行了赋值。
    echo '$a=false';
}
if ($b==true){
    echo '$b=true';
}

||和or都是逻辑或,区别是||优先级高于or,or的优先级比赋值运算符还要低。
举个例子。
$a= true||false;
$b= false or true;
var_dump($a,$b);              #执行结果:bool(true) bool(false) $a=true$b=false
if ($a==true){                #因为,or的优先级低于“=”所以$b先进行了赋值。
echo '$a=true';
}
if ($b==false){
    echo '$b=false';
}

字符串运算符
有两个字符串(string)运算符。第一个是连接运算符("."),它返回其左右参数连接后的字符串。第二个是连接赋值运算符(".="),它将右边参数附加到左边的参数之后。
举个例子。
$a = "Hello ";         #执行结果为 Hello World!
$b = $a . "World!";
echo "$b";
$a = "Hello ";
$a .= "World!";       #执行结果为 Hello World!
echo "$a";
这里不仅可以连接字符串,如果是数字的话也会当作字符串去连接。
比如 $a=123;$b=456;echo $a.$b;
结果为:123456
三元运算符
格式:表达式1?表达式2:表达式3
含义:如果表达式1为真,执行表达式2,如果表达式1为假,则执行表达式3。
举个例子:
$a=2;
$b=3;
$c=$a<$b?"b大于a":"a大于b";
echo '$a='.$a,'<br/>','$b='.$b,'<br/>',$c;  #表达式2和表达式3可以是数,也可以是字符串,也可以是一个式子。
输出结果为:
$a=2
$b=3
b大于a
类型运算符
instanceof 用于确定一个 PHP 变量是否属于某一类 class 的实例
举个例子
class A{}
class B{}
$a=new A;
var_dump($a instanceof A);
var_dump($a instanceof B);
输出结果为:
bool(true) bool(false) //第一个为真,第二个为假。所以$a属于A类。
运算符优先级
这里直接参考的PHP学习手册,按照优先级,由高到低列出下表。

小结
第一部分总结了PHP的一些数据类型和运算符。在下一部分中,会总结一些流程控制,包括分支控制、循环控制等。
PHP入门之类型与运算符(一)的更多相关文章
- PHP入门之类型与运算符
		前言 PHP对于大部分人来说,是比较容易入门的.笔者也是刚学习不久,所以就把自己学习的基础知识进行总结和整理.第一部分是类型与运算符.如果你想学习PHP,可以参考PHP学习手册学习,任何一本教学资料也 ... 
- es6入门6--数组拓展运算符,Array.from()基本用法
		本文只是作为ES6入门第九章学习笔记,在整理知识点的同时,会加入部分个人思考与解答,若想知道更详细的介绍,还请阅读阮一峰大神的ES6入门 一.拓展运算符 ES6中新增了拓展运算(...)三个点,它的作 ... 
- java 基础知识二 基本类型与运算符
		java 基础知识二 基本类型与运算符 1.标识符 定义:为类.方法.变量起的名称 由大小写字母.数字.下划线(_)和美元符号($)组成,同时不能以数字开头 2.关键字 java语言保留特殊含义或者 ... 
- c语言的类型、运算符与表达式
		title: 2017-10-17c语言的类型.运算符与表达式 tags: c程序设计语言 grammar_cjkRuby: true --- 1.1 数据类型 char 字符型,一个字节 int 整 ... 
- 转战JS(1) 初探与变量类型、运算符、常用函数与转换
		转战JS(1)初探与变量类型.运算符.常用函数与转换 做为一名.NET后台开发人员,正考滤向Web前端开发转型,之前也写过一代前端代码,可是当再回头看JS,并有转向它的意愿的时候,突然发现:原来JS不 ... 
- Python入门篇-类型注解
		Python入门篇-类型注解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.函数定义的弊端 1>.动态语言很灵活,但是这种特性也是弊端 Python是动态语言,变量随时可 ... 
- 《挑战30天C++入门极限》C++运算符重载函数基础及其值返回状态
		C++运算符重载函数基础及其值返回状态 运算符重载是C++的重要组成部分,它可以让程序更加的简单易懂,简单的运算符使用可以使复杂函数的理解更直观. 对于普通对象来说我们很自然的会频繁使用算数运 ... 
- Java入门 - 语言基础 - 08.运算符
		原文地址:http://www.work100.net/training/java-operator.html 更多教程:光束云 - 免费课程 运算符 序号 文内章节 视频 1 概述 2 算术运算符 ... 
- MySQL入门(5)——运算符
		MySQL入门(5)--运算符 算术运算符 MySQL支持的算数运算符包括加.减.乘.除.求余. 符号 作用 + 加法运算 - 减法运算 * 乘法运算 / 除法运算 % 求余运算 DIV 除法运算,返 ... 
随机推荐
- Auto-keras API详解
			在网上找到的Auto-keras API详解,非常全面,防止丢失记录在这! Auto-Keras API详解(1)——安装Auto-Keras https://blog.csdn.net/weixin ... 
- maven测试配置是否成功
			测试maven 是否安装成功 win+r 输入 cmd 调出doc 输入 mvn -v maven安装完成测试报错 后来发现是java-home在path中配置缺少bin,如下图 这个是 java-h ... 
- 用JQuery解析获取JSON数据
			JSON 是一种比较方便的数据形式,下面使用$.getJSON方法,实现获得JSON数据和解析,都挺方便简单的.从http://api.flickr.com/services/feeds/photos ... 
- 阿里云Linux CentOS8.1 64位服务器安装LNMP(Linux+Nginx+MySQL+PHP) 并发调试之调试工具ab(apache bench)
			ab 测试工具,全称是 apache bench ,是 Apache 提供的一款测试工具,具有简单易上手的特点,在测试 Web 服务时非常实用. ab 可以在 Windows 系统中使用,也可以在 L ... 
- 关于CSS自文档的思考_css声明式语言式代码注释
			obert C. Martin写的<Clean Code>是我读过的最好的编程书籍之一,若没有读过,推荐你将它加入书单. 注释就意味着代码无法自说明 —— Robert C. Martin ... 
- css3中样式计算属性calc()的使用和总结
			calc的介绍 在css3样式中有一个类似与函数的计算属性calc(),它主要用于指定元素的长度,无论是border.margin.pading.font-size和width等属性都可以使用calc ... 
- 「疫期集训day6」雨林
			是的,他们击退了我们,那又怎样,他们饥肠辘辘,弹尽粮绝...----阿尔贡森林中的士兵 今天考试一般,感觉难度比第一次考试要大的多,T2板子整合(元宵节原题,然而那次考试我都没参加),T1搜索,T3有 ... 
- 小师妹学JVM之:JVM中的Safepoints
			目录 简介 GC的垃圾回收器 分代回收器中的问题 safepoints safepoint一般用在什么地方 总结 简介 java程序员都听说过GC,大家也都知道GC的目的是扫描堆空间,然后将那些标记为 ... 
- python面试题五:Python 编程
			1.B Tree和B+ Tree的区别? 1.B树中同一键值不会出现多次,并且有可能出现在叶结点,也有可能出现在非叶结点中. 而B+树的键一定会出现在叶结点中,并有可能在非叶结点中重复出现,以维持B+ ... 
- java 数据结构(四):java常用类四  比较器以及其他类
			比较器 1.Java比较器的使用背景: Java中的对象,正常情况下,只能进行比较:== 或 != .不能使用 > 或 < 的但是在开发场景中,我们需要对多个对象进行排序,言外之意,就需要 ... 
