一,NULL类型
表示一个变量没有值。NULL类型唯一可能的值就是NULL
被认为是NULL的情况:
<?php
var_dump( $a ); // 1.变量没有声明 返回 NULL
$b;
var_dump( $b ); // 2.变量没有被赋值 返回 NULL
$c = 10;
unset( $c );
var_dump( $c ); // 3.变量被销毁 返回 NULL
$d = null;
var_dump( $d ); // 4.变量被赋值为null 返回 NULL
is_null(),用来判断变量是否为空,如果是返回true,否则返回false。
?>
二,与变量相关的函数
1,unset( 变量名 )
销毁指定的变量
1.变量的实质是内存空间的一块存储区域.
2.PHP代码结束时,所有变量常量都会自动销毁
3.变量不再使用时, 手动提前销毁, 可以及时释放宝贵的内存空间
2,isset( 变量名 )
检测变量是否已设置并且非 NULL
1) 变量未声明 或者 未赋值
2) 变量的值为 null
上面两种情况返回 false , 其他情况返回 true
3,empty( 变量名 )
检查一个变量是否为空
为空返回 true 不为空返回 false
为空的情况有以下几种 :
- "" 或者 '' (空字符串)
- "0" 或者 '0' (字符串 0)
- 0 (整数 )
- 0.0 (浮点数 )
- false (布尔型)
- NULL 或者 null (空)
- array() 或者 [ ] (空数组)
- $var; (声明未赋值的变量)
三,变量的类型转换
php属性于弱类型语言, 变量的类型取决于它存放的数据, 数据类型改变了,变量的类型也就变了.
1.自动类型转换
判断自动转换 布尔
<?php
if ( 变量或表达式 ){
小括号中为true时, 执行这里
小括号中的内容 会被自动转换为布尔型的 true 或 false
}
?>
大多数情况下,会被转换为true, 转换为 false 的情况有:
1) 布尔值 false
2) 整数 0
3) 浮点数 0.0
4) 字符串 "" 和 "0"
5) 变量没有赋值或未定义
6) 空数组 array( )
7) NULL (包括尚未设定的变量)
运算自动转换 数值
<?php
$x = '20' + '30'; // 20 + 30 = 50
$x = '123' + '2ab'; // 123 + 2 = 125
$x = '2y' + '3c'; // 2 + 3 = 5
$x = '' + 5; // 0 + 5 = 5
$x = true + false; // 1 + 0 = 1
$x = true + 1; // 1 + 1 = 2
$x = false + 5; // 0 + 5 = 5
$x = '3.14' + 2; // 3.14 + 2 = 5.14
$x = '12e2ab' + 77; // 1200 + 77 = 1277 (注意)
?>
2.强制类型转换
1).第一种方式
settype( 变量名, 类型字符串 ) 设置变量的新类型
<?php
$num=12.8;
var_dump($num); //输出float(12.8)
settype($num,"int");
var_dump($num); //输出int(12)
?>
2).第二种方式
- (int)、(integer):转换成整型
- (float):转换成浮点型
- (string):转换成字符串类型
- (bool)、(boolean):转换成布尔类型
- (array):转换成数组
- (object):转换成对象
<?php
$float=3.14;
var_dump($float); //输出float(3.14)
$num=(int)$float;
var_dump($num); //输出int(3)
?>
四,可变变量
可变变量就是一个变量以另外一个变量的值作为变量名
变量名前再加$. 变量名还是一个变量
<?php
$a = 'b';
$b = 'xxoo';
echo $$a; // 相当于 echo $($a) => echo $b 所以输出 xxoo 这就是可变变量
?>
五,引用变量
<?php
$a = 100;
// & 称为取地址符
$b = &$a; // $b 和 $a 将代表同一个容器, 所以改变$b的值, $a也就改变了
unset($a);
echo $b; // 销毁互为引用关系变量中的一个变量, 另一个仍然有效
// 销毁 $a 只是不让$a代表容器了, 容器本身还在, 还由$b代表
?>
六,常量
定义赋值后, 存放的数据不能被修改、覆盖,也不能被销毁
格式: define( '常量名', 值);
<?php
//常量可以参加运算
//常量名区分大小写, 习惯上用大写
//常量名也可以使用下划线 USER_NAME
define('NUM', 10);
echo NUM + 10; // 20
//注意:
echo xxoo; // 没有单引号,也没有双引号, 系统会尝试把它理解为一个常量
echo $arr[abc]; // 方括号中没有引号, 系统也会尝试理解为常量
?>
defined('常量名') 判断一个常量是否存在.
系统常量
PHP_VERSION PHP的版本号
PHP_OS PHP环境的运行操作系统
__LINE__ 获得当前PHP文件中所在的行号
__FILE__ 获取当前PHP文件的相对完整路径
__DIR__ 获取文件所在的目录
__FUNCTION__ 当前函数名,只对函数内调用起作用
__CLASS__ 当前类名,只对类起作用
七,PHP 运算符
1). 算术运算符
<?php
$a = 6;
$b = 4;
echo $a + $b; // 加 10
echo $a - $b; // 减 2
echo $a * $b; // 乘 24
echo $a / $b; // 除 1.5
echo $a ** $b // 求幂 1296
echo $a % $b; // 取模 取余数 2
?>
2). 赋值运算符
$a = 5; //把 5 赋值给 $a
$a += 5; //相当于 $a = $a + 5;
$a -= 5; //相当于 $a = $a - 5;
$a *= 5; //相当于 $a = $a * 5;
$a /= 5; //相当于 $a = $a / 5;
$a %= 5; //相当于 $a = $a % 5;
$a **= 5 //相当于 $a = $a ** 5;
3). 递增/递减运算符
//自增运算 $a++ ++$a
$a = 5;
$a++; // 相当于 $a = $a + 1;
echo $a; // 6
$a = 5;
echo $a++; // 5
相当于 1) echo $a; 2) $a=$a+1; 先取值, 再自加
$a = 5;
echo ++$a; // 6
相当于 1) $a=$a+1; 2) echo $a; 先自加, 再取值
//自减运算 $a-- --$a
$a = 5;
$a--; // 相当于 $a = $a - 1;
echo $a; // 4
$a = 5;
echo $a--; // 5
相当于 1) echo $a; 2) $a=$a-1; 先取值, 再自减
$a = 5;
echo --$a; // 4
相当于 1) $a=$a-1 2) echo $a; 先自减, 再取值
4). 字符串运算符
有两个字符串(string)运算符。
第一个是连接运算符("."),它返回其左右参数连接后的字符串。
第二个是连接赋值运算符(".="),它将右边参数附加到左边的参数之后。
$a = "Hello ";
$b = $a."World!"; // 现在 $b 包含 "Hello World!"
$a = "Hello ";
$a .= "World!"; // 相当于 $a = $a.'World'; $a 包含 "Hello World!"
5). 比较运算符
比较运算符, 最后的结果为布尔型
> 大于
< 小于
>= 大于等于
<= 小于等于
== 用来判断是否相等. 值相等就可以
=== 用来判断是否全等, 要求类型相等, 值也要相等. 二者缺一不可
!= 不等于
!== 不全等于. 值不相等, 或者类型不相等
6). 逻辑运算符
逻辑运算符,最后的结果为布尔型
&& 逻辑与 符号两边同时为 true 结果就为true, 否则为 false
|| 逻辑或 符号两边只要一边为 true 结果就为 true. 仅当两边同时为 false 时, 结果才为 false
! 逻辑非 将值取反, 原来的 true 变成 false ,原来的 false 变成 true
xor 逻辑异或 符号两边不相同的时候为 true 两边相同的时候为false
逻辑或短路 当 || 左边的表达式为真时, 结果肯定为真, 所以 || 右边的表达式就不执行了
<?php
$a = 3;
$b = 5;
$c = $a<6 || ($b=7);
// $a<6 为真, 就代表着 等号右边一定为真, $b=7 就不会被执行 这称为 逻辑或短路
$d = 0;
if($a < 6 || ++$d){
echo $d;
}
?>
逻辑与短路 当 && 左边的表达式为假时, 结果肯定为假, 所以 && 后边的表达式就不执行了
<?php
$a = 3;
$b = 5;
$c = $a>6 && ($b=7);
// $a>6 为假, 就代表着 等号右边肯定为假, $b=7 就不会被执行 这称为 逻辑与短路
?>
7). 三元运算符
格式:
$a = 表达式1 ? 表达式2 : 表达式3;
1) 表达式1 为真时, 把 表达式2 的值赋值给 $a
2) 表达式1 为假时, 把 表达式3 的值赋值给 $a
<?php
$test = '必火网络安全';
// 普通写法
$username = isset($test) ? $test : 'nobody';
// 实例写法
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';
echo $username;
?>
8). 其它运算符
@ 错误控制运算符 当把@放置在一个 PHP 表达式之前,该表达式可能产生的任何错误诊断都被抑制
`` 执行运算符 反引号 ` 系统自带命令 `; 通过这种形式可以执行系统自带的命令
|