php官网文档

数据类型与运算符

数据类型概述

返回变量的数据类型

简述命名规则 :很多命名规则都是 字母数字下划线 ,还有驼峰命名法的,大体上就这些。命名规则其他编程语言也适用。

var_dump();

数据类型

类型 释义 补充
bool 布尔类型 true/false[ 0,0.0,'','0',array(),null ]
(方括号内表示false的情况,其他情况都是true)
int 整形 -
float 浮点型 带小数 -
string 字符串 单引号 : 简单字符串效率高,且字符串出现变量时不会生效。
双引号 : 可以解析引号内的变量,最好使用{}框住变量
定界符 : 形如
<<<标识符
内容
标识符

标识符内的内容可以写任何内容,可以包裹特殊符号,但和双引号一样,变量需要{}囊括起来
array 数组 array(“name”=>”Tom”,”sex”=>”man”)
打印数组:print_r
一般是下标访问数组:$c[下标]
下上面的”name”就是一个下标,且不等于name时不输出”Tom”
object 对象 较复杂,后面补充
resource 资源 访问外部资源
NULL 空值 表示没有任何值

数据类型转换

自转

参与数据运算时,会出现其他数据类型自动转换为数值参与运算的情况。最好不涉及。

强转

类型的强制转换: (数据类型)需要转换的数据

例如: (int)$a ;

bool,float,string,array,object都可以强转。

测试函数

形如: is_数据类型(数据) ;

例如: is_bool($a) ;

其他数据类型也有

常量

常量的定义+使用+区别(常量与变量)

定义常量: define(“变量名”,”变量值”);
使用常量: echo 常量名;
检查是否定义了某常量: defined(“变量名”);

常量与变量的区别:

  1. 不理会变量规则,在任何地方定义与使用。
  2. 没有$,仅define定义,不可重新定义和修改
  3. 值类型:bool,int,float,string
  4. 预定义常量不区分大小写,自定义常量区分大小写。

预定义常量

系统定义好的常量

常量名 常量值
__FILE__ 当前文件在系统当中的完整路径和文件名
__LINE__ 当前行数
__FUNCTION__ 当前的函数名
__CLASS__ 当前的类名
__METHOD__ 当前对象的方法名
PHP_OS UNIX或WINNT等
PHP_VERSION 当前PHP服务器的版本
DIRECTORY_SERARATOR \或/ 根据操作系统决定目录的分隔符

8个常用魔术常量

名字 说明
__LINE__ 文件中的当前行号。
__FILE__ 文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。
__DIR__ 文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。它等价于 \d\irname(__FILE__)。除非是根目录,否则目录中名不包括末尾的斜杠。
__FUNCTION__ 当前函数的名称。匿名函数则为 {closure}。
__CLASS__ 当前类的名称。类名包括其被声明的作用域(例如 Foo\Bar)。当用在 trait 方法中时,__CLASS__ 是调用 trait 方法的类的名字。
__TRAIT__ Trait 的名字。Trait 名包括其被声明的作用域(例如 Foo\Bar)。
__METHOD__ 类的方法名。
__NAMESPACE__ 当前命名空间的名称。
ClassName::class 完整的类名。

运算符

简略概述

1.算数运算符
+ - * / % ++ --
注:++、--是针对变量而言的

2.字符串运算符
. :这个点呐,连接变量或者字符串
如:echo 'my name is'.'SYW';

3.赋值运算符(和算术运算符相比,多了个等号)
属于二元运算符
右边可以为表达式(任何有值的东西)
= += -= *= /= %= .=

$a += $b 等同于 $a = $a + $b;

4. 比较运算符
又叫做关系运算符,条件运算符。
返回布尔值,满足要求返回true,不满足返回false
验证输出请使用var_dump,否则会输出布尔值的整形值

== 值相等
=== 全等 值相等和类型相等
!= 不等 值不相等
<> 不等 值不相等
!== 不全等 值和类型都不等
< 小于
> 大于
<= 小于等于
>= 大于等于

5.逻辑运算符
逻辑运算符会自动将比较的两者转为布尔类型再进行比较。

and 逻辑与 左右同时为true则返回true
or 逻辑或 左右任意为true则返回true
xor 逻辑异或 左右1个true1个false时返回true
! 逻辑非 为true返回false,为false返回true
&& 逻辑与 左右同时为true则返回true
|| 逻辑或 左右任意为true则返回true

“短路”的两种情况:
当and,&&左边为false时,程序从false的地方停止执行,不执行右边
当||,or左边为true时,程序

6.位运算符
位的意思是二进制位,位运算符指的是按位运算
举个简单的例子

1 & 3 = 1
这是按位的与运算,假设它是8bit的数字,就是
0000 0001 1
0000 0011 3
---------
0000 0001 1
与的概念在上面讲过了,这里是直接的运用。
当然,具体的位运算符如下
& 按位与
| 按位或
^ 按位
~ 按位
<< 按位
>> 按位

emmmmm其他不做补充,以后再细说

7.其他运算符
1) 三元运算符(?:)
$a > $b ? '值1' : '值2';
条件判断 返回值1 返回值2

条件判断为true时:返回值1,
为false:返回值2

2) 系统命令执行(``)
放在``里面就行
命令是cmd命令,例如:`ipconfig`;
涉及跨平台,命令在不同平台执行的不同,也就是不是win平台,可能不能使用cmd命令。

3) 屏蔽错误(@)
使用@加在可能报错的地方,这个地方的报错会被屏蔽掉!

4) 成员访问运算符
->
=>
暂时略过

优先级

摘录于官网。

结合方向 运算符 附加信息
不适用 clone new clone 和 new
** 算术运算符
不适用 + - ++ – ~ (int) (float) (string) (array) (object) (bool) @ 算术 (一元 + 和 -), 递增/递减, 按位, 类型转换 和 错误控制
instanceof 类型
不适用 ! 逻辑运算符
* / % 算术运算符
+ - . 算数 (二元 + 和 -), array 和 string (. PHP 8.0.0 前可用)
<< >> 位运算符
. string (PHP 8.0.0 起可用)
< <= > >= 比较运算符
== != === !== <> <=> 比较运算符
& 位运算符 和 引用
^ 位运算符
| 位运算符
&& 逻辑运算符
|| 逻辑运算符
?? null 合并运算符
无关联 ? : 三元运算符 (PHP 8.0.0 之前左联)
= += -= *= **= /= .= %= &= |= ^= <<= >>= ??= 赋值运算符
不适用 yield from yield from
不适用 yield yield
不适用 print print
and 逻辑运算符
xor 逻辑运算符
or 逻辑运算符

结合方向:规定从哪个方向开始算的问题。

优先级归纳:

1) [无]递增递减
2) [右]逻辑非!
3) [左]乘,除,取余
4) [左]加,减,字符串连接符
5) [无]包含大于号或者小于号的比较运算符6)[无]不包含大于号或者小于号的比较运算符
6) [左]逻辑与&&
7) [左]逻辑或1
8) [左]? :
9)  [右]赋值运算符
10) [左]逻辑异或xor

圆括号的作用:

用圆括号可以将表达式里面的某一块看成一个整体 !
+增强代码可读性
+优先执行