1. 变量
1.1 变量定义
PHP 中的变量不需要任何赋值关键字,直接使用 $
即可创建一个变量:
1 | $var1; // 定义变量 |
定义变量后如果不适用就需要删除变量:
1 | unset($var2); |
变量定义规则:
- 必须以
$
开始 - 变量可以有数字、字母、下划线,但是不能以数字开头,如
$1var
- PHP 允许使用中文变量
1.2 预定义变量
- $_GET
- $_POST
- $_REQUEST
- $GLOBALS
- $_SERVER:服务器信息
- $_SESSION
- $_COOKIE
- $_ENV
- $_FILES
1.3 可变变量
如果 $
后紧跟一个带有 $
的变量,变量的值为另一个变量的名字,则可以通过第一个 $
取到相应变量的值,如:
1 | $a = 'b' |
原理:$a
=> ‘b’, $
与 'b'
绑定 => $b
=> ‘result’
1.4 变量传值
值传递:
1 | $a = 1; |
引用传递:
1 | $a = 1; |
2. 常量
2.1 常量的定义
两种方式:
1 | define('常量名', 常量值, [是否区分大小写]); |
特殊常量仅能使用 define()
,如:
1 | define('-_-', 'smile'); |
define
与 const
定义常量的区别再于 访问权限 。
对于特殊常量我们需要使用 constant()
:
1 | define('-_-', 'smile'); |
2.2 系统常量
常用常量:
- PHP_VERSION
- PHP_INT_MAX
- PHP_INT_SIZE:表示整型所占用的字节数,值为4,PHP中整型允许负数
整数类型由 4 个字节存放,也就是 32 位,转化为十进制后可以表达的最大数为
4294967295
,但是 PHP 的的PHP_INT_MAX
只有2147483647
,这是因为 PHP 需要用一个符号位来表示负数,因此实际上用来表示数字的占 31 位。
在 64 位的 PHP 中,PHP_INT_SIZE 为 8,相应的 PHP_INT_MAX 也更大。
魔术常量:
- __DIR__:当前被执行脚本所在的绝对路径
- __FILE__:当前被执行脚本的绝对路径(带名字)
- __NAMESPACE__:当前所属的行数
- __CLASS__:当前所属的类
- __METHOD__:当前所属的方法
3. 数据类型
data type 在 PHP 中指的是数据本身的类型,而不是变量的类型,PHP是一种弱语言类型,本身没有数据类型。
3.1 八种数据类型
PHP 的数据类型可分为三大类八小类。
简单/基本数据类型(4个小类):
- 整型 int/integer:4个字节存储,如果超出存储范围,会被转为浮点型存储
- 浮点型 float/double:8个字节存储
- 字符串型 string:根据系统长度分配
- 布尔类型 bool/boolean
复合数据类型(2小类):
- 资源类型 resource:存放资源数据(PHP 外部数据,如数据库、文件)
- 空类型 NULL:只有一个值就是 NULL
3.2 类型转换
PHP 中有两种类型的转换方式:
自动转换:系统自行转换,效率较低
1 | $a = 'abc1.1.1'; |
强制转换:根据自己的需要将目标类型转换
1 | $a = 'abc1.1.1'; |
同时还可以使用 settype()
方法对变量进行强制转换,这会对原来的值产生影响:
1 | $b = '1.1.1abc'; |
其他类型转数据值的说明:
- 布尔 true 为 1,false 为0
- 字符串数据有自己的规则
- 以字母开头的字符,永远为0
- 数字开头的字符,取碰到字符前的数字部分
3.3 类型判断
使用 is_
判断,结果返回一个布尔值,但由于 Bool 类型不能用 echo
来查看,所以要使用 var_dump
结构来查看:
1 | $a = '123'; |
使用 gettype()
方法也可以用来获取类型,得到是该类型对应的字符串:
1 | $a = '123'; |
3.4 数字类型
不同的进制表示方法如下:
$a = 120;
十进制$a = 0b110;
二进制,以0b
开头$a = 0120;
八进制,以0
开头$a = 0x120;
十六进制,以0x
开头
对于浮点型型,计算可能不准确:
1 | $f = 2.1; |
同时还可以使用如下的方法判断数据是否为空:
empty()
: 判断数据的值是否为空,如空字符串、null、空数组、布尔值为 false 的、未定义的变量,返回都是true
isset()
:判断数据存储的变量值本身是否存在,如变量值为 null 的、变量定义却未赋值的、未定义的变量,返回都是false
is_null
:与isset
的定义正好相反
4. 运算
4.1 连接运算符
使用 .
可以将变量连接起来:
1 | $a = 'hello'; |
4.2 错误抑制符
使用 @
可以抑制报错,使代码继续向后执行:
1 | $a = 233; |
4.3 三元运算符
支持
4.4 逻辑运算
与 Javascript 用法一致
4.5 位运算符
&
按位与,两个位都未1,结果为1,否则为0|
按位或,两个有一个为1,结果为1~
按位非,一个位如果为1则变成0,否则反之^
按位异或,两个相同则为0,不同则为1<<
按位左移,整个位(32位)>>
按位右移
举例1:
1 | $a = 5; |
原理:
1 | 5 的源码:00000101 |
举例2:
1 | $a = -5; |
原理:
1 | -5 11111011 |
5. 循环
for 循环:
1 | for($i = 0; $i < 3; $i++){ |
1 | 0 |
foreach 循环:
1 | $x = array("one","two","three"); |
1 | one |
while 循环:
1 | while($i<=5){ |
1 | The number is 1 |
do…while 循环:
1 | do { |
1 | The number is 2 |
5. 函数
创建函数:
1 | function functionName($name){ |
默认参数:
1 | function setHeight($minheight=50) { |
6. 数组
6.1 数组
创建数组:
1 | $cars = array("porsche","BMW","Volvo"); |
1 | porsche |
php 中的数组是值类型的。
6.2 关联数组
创建关联数组:
1 | $age = array("Bill"=>"35","Steve"=>"37","Elon"=>"43"); |
从 PHP 5.4 起可以使用:
1 | $array = [ |
遍历关联数组:
1 | foreach ($age as $x=>$x_value) { |