PHP 基础
目录
php 假值 与 empty 和 is_null
- 当 $a 是以下 值时候
(boolean) $a
为假 false:
- 未设置的变量
- var $a; 未初始化 $a 的值
- $a = null;
- false
- 0
- ''
- ‘0’
- []
- 以上值 empty() 是均为 true 。
- isset() 检测 一个变量设置了,且不为 null ,所以仅仅前 3 条 为 false 。
- is_null() 正好与 isset() 相反, 仅仅 前 3 条 为 true 。
- gettype() 前3条 ,均返回 null,即 类型 未知。
php array_map 和 array_walk 的区别
相同点 都是利用回调函数对数组中每个元素进行操作。
array_map(callable $callback, $$arr, …$$arr):array | array_walk( array &$arr, callable $$callback [,$$userData]) | |
---|---|---|
描述 | 对数组的每个元素应用回调函数 | 使用用户子定义函数对每个元素做回调处理 |
返回值 | 返回数组,如果回调函数没有返回值 返回 [] | 返回 bool , 成功 true,否则 false |
参数顺序 | 先回调,再数组,再额外数组 | 先数组,再回调,再用户数据 |
回调函数参数 | 只有数组的 value, 且 个数 与 传入的数组一致,即可以转入多个数组 | 默认 value, key [可选用户数据], 如果要修改原数组的值以引用的方式 (&) 传第一个值 |
php 的魔术方法
__get(), __set(), __isset(), __unset(),
__sleep(), __wakeup(), __serialize(), __unserialize(), // 序列化和反序列化
__invoke(), // 以函数方式调用一个对象时 $a= new A; $a(1); class A 中的 __invoke($val) 方法将被调用
__clone() // 深度复制时 调用