0. 常用:
$xxx, 变量
-> 对象访问
=> 数组 key=>value
:: 静态访问
isset() // 函数用于检测变量是否已设置并且非 NULL
set_exception_handler 异常
0.1 可用函数
boolval 获取变量的布尔值
debug_zval_dump 查看一个变量在zend引擎中的引用计数、类型信息
doubleval floatval 的别名
empty 检查一个变量是否为空
floatval 获取变量的浮点值
get_defined_vars 返回由所有已定义变量所组成的数组
get_resource_type 返回资源(resource)类型
gettype 获取变量的类型
import_request_variables 将 GET/POST/Cookie 变量导入到全局作用域中
intval 获取变量的整数值
is_array 检测变量是否是数组
is_bool 检测变量是否是布尔型
is_callable 检测参数是否为合法的可调用结构
is_double is_float 的别名
is_float 检测变量是否是浮点型
is_int 检测变量是否是整数
is_integer is_int 的别名
is_iterable 检测变量的内容是否是一个可迭代的值
is_long is_int 的别名
is_null 检测变量是否为 NULL
is_numeric 检测变量是否为数字或数字字符串
is_object 检测变量是否是一个对象
is_real is_float 的别名
is_resource 检测变量是否为资源类型
is_scalar 检测变量是否是一个标量
is_string 检测变量是否是字符串
isset 检测变量是否已设置并且非 NULL
print_r 打印变量,输出易于阅读的信息。
serialize 序列化对象
settype 设置变量的类型
strval 获取变量的字符串值
unserialize 从已存储的表示中创建 PHP 的值
unset 释放给定的变量
var_dump 打印变量的相关信息
var_export 输出或返回一个变量,以字符串形式表示
1. echo 和 print 区别:
- echo - 可以输入,输出一个或多个字符串
- print - 只允许输入,输出一个字符串,返回值总为 1
2. 条件
if (条件){}
elseif (条件){}
else{}
3. 字符串的方法
`strlen()`:返回字符串的长度。
`empty()`:检查字符串是否为空。
`trim()`:去除字符串两端的空格或其他字符。
`substr()`:截取字符串的一部分。
`strpos()`:查找字符串中某个子串的位置。
`str_replace()`:替换指定的字符串。
`strtolower()`:将字符串转换为小写字母。
`strtoupper()`:将字符串转换为大写字母。
`ucfirst()`:将字符串的首字母转换为大写。
`ucwords()`:将字符串中每个单词的首字母转换为大写。
`explode()`:将字符串拆分成数组。
`implode()`:将数组元素连接成字符串。
`str_split()`:将字符串拆分为单个字符的数组。
`mb_strlen()`:返回多字节字符串的长度。
`mb_substr()`:截取多字节字符串的一部分。
`mb_strpos()`:查找多字节字符串中某个子串的位置。
`mb_strtolower()`:将多字节字符串转换为小写字母。
`mb_strtoupper()`:将多字节字符串转换为大写字母。
3.1 字符串插值
echo "Hello, my name is {$this->name}. I am {$this->age} years old.";
// `{$this->name}`表示要插入`$this->name`的值,其中`$this`指向当前对象实例本身。同样,`{$this->age}`表示要插入`$this->age`的值。
// 例如,如果`$this->name`的值为"John",`$this->age`的值为25,则最终输出的字符串将是"Hello, my name is John. I am 25 years old."。字符串插值使得我们可以轻松地将变量的值嵌入到字符串中,而无需显式地进行字符串连接或使用"."运算符。
// 需要注意的是,在使用字符串插值时,字符串必须使用双引号(`"`)包裹,而不能使用单引号(`'`)。只有双引号才支持字符串插值的特性。
4. 数组
4.1 定义:
$cars = array("Volvo","BMW","Toyota");
$cars = ["apple", "banana", "orange"];
$cars = range(1, 5);
4.2 常用函数
1. `count()`:返回数组中元素的数量。
2. `array_push()`:向数组末尾添加一个或多个元素。
3. `array_pop()`:删除并返回数组中最后一个元素。
4. `array_shift()`:删除并返回数组中第一个元素。
5. `array_unshift()`:在数组开头插入一个或多个元素。
6. `array_merge()`:合并一个或多个数组。
7. `array_slice()`:从数组中提取指定范围的元素。
8. `array_splice()`:向/从数组中添加/删除元素,并返回被删除的元素。
9. `array_search()`:在数组中搜索给定值,并返回对应的键名。
10. `in_array()`:检查数组中是否存在某个值。
11. `array_key_exists()`:检查数组中是否存在指定的键名。
12. `array_keys()`:返回数组中所有的键名。
13. `array_values()`:返回数组中所有的值。
14. `array_unique()`:移除数组中的重复值,返回新数组。
15. `sort()`:对数组进行升序排序。
16. `rsort()`:对数组进行降序排序。
1. `array_reverse()`:返回一个反转顺序后的数组。
2. `array_keys()`:返回数组中所有的键名。
3. `array_values()`:返回数组中所有的值。
4. `array_flip()`:交换数组中的键和值。
5. `array_filter()`:使用回调函数过滤数组中的元素。
6. `array_map()`:对数组中的每个元素应用回调函数,并返回结果数组。
7. `array_reduce()`:通过回调函数迭代地将数组简化为单个值。
8. `array_walk()`:对数组中的每个元素应用用户自定义的回调函数。
9. `array_unique()`:移除数组中的重复值,返回新数组。
10. `array_intersect()`:返回两个或多个数组的交集。
11. `array_diff()`:返回两个数组的差集。
12. `array_combine()`:使用一个数组的值作为键,另一个数组的值作为值,创建一个新数组。
13. `array_chunk()`:将一个数组分割成多个大小相等的块,返回一个二维数组。
5. 闭包
function counter() {
$count = 0;
return function () use (&$count) {
$count++;
echo $count;
};
}
$increment = counter();
$increment(); // 输出结果:1
$increment(); // 输出结果:2
5.1 use的使用
a. 使用use关键字可以将外部变量按值传递给匿名函数,这样匿名函数在定义时就会捕获变量的当前值
b. 使用use关键字还可以将外部变量按引用传递给匿名函数,这样匿名函数在执行时可以直接修改外部变量的值。需要在外部变量名称前加上&符号表示按引用传递
6. 魔法常量 超级全局变量
在 PHP 中,有几个被称为“超级全局变量”的特殊预定义变量,它们可以在脚本的任何位置访问,并且无需任何特殊的声明或引入。以下是 PHP 中的所有超级全局变量:
1. `$GLOBALS`:存储了当前脚本中的全局变量,可以在函数内部通过`$GLOBALS['variable_name']`来访问。
2. `$_SERVER`:存储了与当前脚本相关的服务器和执行环境的信息,如请求头、URL 等。
3. `$_GET`:存储了通过 GET 方法传递给当前脚本的参数值。
4. `$_POST`:存储了通过 POST 方法传递给当前脚本的参数值。
5. `$_REQUEST`:存储了通过 HTTP 请求(GET、POST 和 COOKIE)传递给当前脚本的参数值。
6. `$_SESSION`:存储了当前用户的会话数据,需要先通过`session_start()`函数开启会话。
7. `$_COOKIE`:存储了当前页面接收到的 cookie 数据。
8. `$_FILES`:存储了通过文件上传表单提交的文件数据。
9. `$_ENV`:存储了当前环境变量的值。
这些超级全局变量都是关联数组(array),可以通过键名访问其中的数据。
需要注意的是,对于`$GLOBALS`、`$_SERVER`、`$_GET`、`$_POST`、`$_REQUEST`、`$_SESSION`、`$_COOKIE` 和 `$_FILES`,它们的值都是从请求中获取的,并且可以通过修改其中的元素来改变脚本的执行环境。
在 PHP 中,一共有 9 个魔法常量,它们分别是:
1. `__LINE__`:当前行号的数字值。
2. `__FILE__`:当前文件的完整路径和文件名。
3. `__DIR__`:当前文件所在目录的绝对路径。
4. `__FUNCTION__`:当前函数(方法)的名称。
5. `__CLASS__`:当前类的名称。
6. `__TRAIT__`:当前 trait 的名称。
7. `__METHOD__`:当前方法(类中的函数)的名称。
8. `__NAMESPACE__`:当前命名空间的名称。
9. `__COMPILER_HALT_OFFSET__`:用于在使用`__halt_compiler()`函数时获取其位置。
这些魔法常量由 PHP 预定义并提供,可以在脚本的任意位置使用,并且不需要引入任何特殊的库或扩展。
7. 对象
构造函数
public function __construct()
析构函数
public function __destruct()
unset()
8. 表单
9. 高级函数
fopen()
fclose()
feof()
fgets()
fgetc()
9.1 文件上传 9.2 过滤器
- filter_var() - 通过一个指定的过滤器来过滤单一的变量
- filter_var_array() - 通过相同的或不同的过滤器来过滤多个变量
- filter_input - 获取一个输入变量,并对它进行过滤
- filter_input_array - 获取多个输入变量,并通过相同的或不同的过滤器对它们进行过滤
// false or true
filter_var($int, FILTER_VALIDATE_INT, array("options" => array("min_range"=>$min, "max_range"=>$max)))
9.3 json
json_encode 对变量进行 JSON 编码
json_decode 对 JSON 格式的字符串进行解码,转换为 PHP 变量
json_last_error 返回最后发生的错误
9.4 Directory 函数 9.5 Logging 函数 9.6 Filesystem 函数 9.7 FTP 函数 9.8 HTTP函数 9.9 Libxml 函数 9.10 图像处理