一、整数类型
$var1 = 42; // 一个整数,使用默认的 int 类型
$var2 = -12345; // 一个负整数
$var3 = 0x1A; // 16 进制整数,相当于十进制的 26
$var4 = 0123; // 八进制整数,相当于十进制的 83
$var5 = 0b1111; // 二进制整数,相当于十进制的 15
// php中提供了很多函数进行转换:
// Decbin():十进制转二进制
var_dump(decbin(107)); // 结果:string(7) "1101011"
// Decoct():十进制转八进制
// Dechex():十进制转十六进制
// Bindec():二进制转十进制
二、浮点类型
尽量不要用浮点型做精确判断
三、布尔类型
isset()
isset()
函数用于检查一个变量是否已经被声明并且值不是null
。
- 用法:
isset(variable)
- 返回值:如果变量已设置且值不为
null
,则返回true
;否则返回false
empty()
empty()
函数用于检查一个变量是否为空。空变量被定义为以下情况之一:
不存在或未声明
值为
false
值为
0
(作为整数或字符串)值为空字符串
""
值为
null
值为空数组
[]
或空对象stdClass
用法:
empty(variable)
返回值:如果变量为空,则返回
true
;否则返回false
。
$var1 = 5;
$var2 = null;
$var3 = "Hello";
isset($var1); // true,因为 $var1 已设置且值不为 null
isset($var2); // false,因为 $var2 值为 null
isset($var3); // true,因为 $var3 已设置且值不为 null
isset($var4); // false,因为 $var4 未声明
——————————————————————————————————————————————————————————————————————
$var1 = 0;
$var2 = "";
$var3 = null;
$var4 = []; // 空数组
empty($var1); // true,因为 $var1 的值为 0
empty($var2); // true,因为 $var2 的值为空字符串
empty($var3); // true,因为 $var3 的值为 null
empty($var4); // true,因为 $var4 是空数组
- isset() 主要用于检查变量是否已经设置和不为
null
,通常用于检测变量是否存在以及避免null
值导致的错误。 - empty() 则用于检查变量是否为“空”,比如检查用户输入、默认值或数据存储中的空值情况。
四、运算符
<?php
// 运算符:是一种将数据进行运算的特殊符号,在PHP中一共有十多种运算符。
// 算术运算符 +-*/%
// 比较运算符 > >= < <= ==(数据大小相同即可,无需考虑数据数据类型) != ===(全等于,大小及数据类型均等) !==
$a = '123'; // 字符串
$b = 123; // 整型
var_dump($a == $b); // 结果: bool(true)
var_dump($a === $b); // 结果: bool(false) 不全等于
// 逻辑运算符 &&(左边条件与右边条件同时成立) ||(有一个满足即可) !(取反)
$c = 'weekend';
$d = 'goods';
var_dump($c == 'weekend' && $d == 'good'); // bool(false)
var_dump($c == 'weekend' || $d == 'good'); // bool(true)
var_dump(!($c == good); // bool(true)
连接运算符 .(将字符串连接一起) .=(将左边内容与右边内容连接起来并重新赋值)
$e = 'hello';
$f = 123;
echo $e . $f; // hello 123(注意,此处有强制类型转换)
$e .= $f;
echo $e; // hello 123
错误抑制符:@(可能出错的表达式),在PHP中有一些错误可以提前预知,但又不想报错,这就需要错误抑制符。
$g = 0;
echo $f % $g; // 此时会报错
echo @($f % $g); // 不会报错
三目运算符(问号表达式) 表达式1 ? 表达式2:表达式3;
流程控制
分类:顺序结构、分支结构(if分支与switch分支)、循环结构
自操作运算符 ++ --(前置或后置如果只有自操作,则效果一致)
$i = $g++; // $g = 1; $i = 0
$i = ++$g; // $g = 2; $i = 2;
位运算符
/*
计算机码:计算机在实际存储数据时,采用的编码规则(二进制规则)
计算机码:原码、反码和补码。数值本身最左边一位用来充当符号位:正数为0,负数为1;
原码:数据本身从十进制转换成二进制得到的结果
正数,左符号位为0 负数:左符号位为1
反码:针对负数,符号位不变,其他位取反。
补码:针对负数,反码+1.(系统中存的为补码)
以0为例,若是原码,则+0 = 00000000 -0 = 10000000;二者不一样
-0 反码 11111111 -0 补码 00000000 与+0一样(正数原码、补码、反码为其本
身)。
*/
$j = 5; // 原码:00000101
$k = -5; // 原码:10000101 反码:11111010 补码:11111011
// 位运算:取出计算机中最小的单位(bit)进行运算 & | ~(按位取反) ^(按位异或) >>(右移) <<(左移)
// 注:1、系统进行位运算时,均是利用补码进行运算的 2、运算结束之后,必须转换为原码进行显示
// 按位取与
var_dump($j & $k); // int(1)
/* 5 00000101
-5 11111011
& 00000001 判断:符号位为0,正数,所存即为原码,无需操作
*/
// 按位取反
var_dump(~ $k); // int(4)
/*
-5 11111011
~ 00000100 正数即为原码,
*/
// 按位左移
var_dump($k >> 1) // int(-3)
var_dump($k >> 2) // int(-2)
/*
-5 11111011
>>2 11111110(右移补符号位)
反码 11111101(补码-1)
原码 10000010(除符号位均取反)
*/
五、流程控制
1、for循环
<?php
for($i = 0;$i<=10;$i++)
{
echo $i;
}
?>
2、while和do-while循环
3、中断控制
continue
用于跳过当前循环迭代的剩余代码,继续执行下一次迭代。break
用于立即退出整个循环,不再执行后续的迭代。
4、流程控制替代语法
if
后面使用:
而不是{
,else
后面使用:
而不是{
,endif;
替代了普通语法中的}
。foreach
后面使用:
而不是{
,endforeach;
替代了普通语法中的}
。for
循环的初始化、条件和增量部分保持不变,使用:
代替{
,endfor;
代替}
。- 替代语法主要用于在 HTML 或模板文件中嵌入 PHP 代码时,可以增加代码的可读性。
使用表格打印九九乘法表:
<?php
// 普通语法
for ($i = 1; $i <= 10; $i++) {
echo $i;
}
?>
<!-- 替代语法 -->
<?php for ($i = 1; $i <= 10; $i++): ?>
<?php echo $i; ?>
<?php endfor; ?>
六、常见系统函数
字符串处理函数
- strlen() - 返回字符串的长度。
- strpos() - 查找字符串在另一个字符串中第一次出现的位置。
- substr() - 返回字符串的一部分。
- strtolower() / strtoupper() - 将字符串转换为小写 / 大写。
- str_replace() - 替换字符串中的部分内容。
数组函数
- count() - 统计数组中元素的个数。
- array_push() / array_pop() - 向数组末尾添加元素 / 弹出数组末尾的元素。
- array_merge() - 合并一个或多个数组。
- array_key_exists() - 检查数组中是否存在指定的键名。
文件和目录函数
- file_get_contents() - 将整个文件读入一个字符串。
- file_put_contents() - 将一个字符串写入文件。
- fopen() / fclose() - 打开 / 关闭文件。
- mkdir() / rmdir() - 创建 / 删除目录。
日期和时间函数
- date() - 格式化本地日期时间。
- strtotime() - 将任何英文文本的日期时间描述解析为 Unix 时间戳。
- time() - 返回当前 Unix 时间戳。
- strtotime() - 将日期时间字符串解析为 Unix 时间戳。
其他常用函数
- echo() - 输出一个或多个字符串。
- var_dump() - 打印变量的相关信息,包括类型和值。
- isset() / empty() - 检查变量是否已设置并且非空 / 检查一个变量是否为空。
- header() - 发送 HTTP 报头。
- die() / exit() - 输出一条消息并且退出当前脚本。
七、文件包含原理
- 在 PHP 中,可以使用
include(文件存在性不强)
、require(文件必须)
、include_once
、require_once
等语句来包含其他文件。 - 这些语句使得在当前 PHP 脚本中可以引入其他 PHP 文件的内容,从而实现代码复用和模块化开发。
- 当遇到
include
或require
语句时,PHP 解析器会根据路径信息去寻找指定的文件。
include
在包含文件不存在或出错时会发出警告,但脚本会继续执行。require
在包含文件不存在或出错时会导致致命错误,停止脚本的执行。- 除了
include
和require
外,还有include_once
和require_once
,它们的作用是确保文件只被包含一次,即使多次调用也只会包含一次,避免重复定义函数或类等。
七、文件加载路径
- 如果路径是一个相对路径,解析器会相对于当前脚本所在的路径来寻找文件。
- 如果路径是一个绝对路径,解析器会从服务器的根目录或虚拟主机的根目录开始寻找文件。
八、文件嵌套包含
文件包含可以是嵌套的,也就是说,一个被包含的文件可以包含其他文件。
注意:
-
路径问题:确保包含的文件路径正确,可以使用相对路径或绝对路径,或者通过设置
include_path
确定 PHP 解析器搜索文件的路径。 -
循环包含:避免出现循环包含,即 A 包含了 B,而 B 又包含了 A,这会导致无限循环。