目录
数组
1 . array_diff
比较数组的差集
(判断请求参数是否缺少,在已设定的数组里)
$request = [
'name'=>'xiaoming',
'age'=>'18',
'gender'=>''
]
function test( $request ){
// 需要入库的参数
$must = ['name','age','gender','school','height'];
// 将请求参数的键取出比较
$request_keys = array_keys($request);
// 将请求中缺少的参数返回
$param = array_diff($must , $request_keys);
// 返回一个差集的数组
// $param = ['school','height']
// 此时可继续判断符合的参数是否有空值
foreach ($must as $v){
if(empty($requset[$v])){
echo $v . '不能为空';
}
}
}
2 . array_column
多维数组里只取指定的字段
班级表数组取所有学生姓名:
array_column ($arr, 'userName');
3 . compact()
创建已有变量成数组
$m = 'is.m';
$n = 'is.n';
$l = 'is.l';
1:$result = compact('m','n','l'); 包含变量名的字符串
2: $result = compact(['m','n','l']); 包含变量名的数组
Array
(
[m] => is.m
[n] => is.n
[l] => is.l
)
4 . extract()
将数组键转为变量
$m = [
'a'=>'---a',
'b'=>'---b',
'c'=>'---c'
];
$q = extract($m);
echo "$a \n $b \n $c";
$q = extract($m, EXTR_PREFIX_ALL,'t'); 给所有变量加前缀
echo "$t_a \n $t_b \n $t_c";
5 . array_map
处理数组每个值
# 普通文件
$arr = [1,2,3,4,5];
function foo($n)
{
return $n * $n;
}
$res = array_map('foo', $arr);
# $res = [1,4,9,16,25]
# 匿名函数
$arr = [1,2,3,4,5];
$res = array_map(function($n){
return $n * $n;
},$arr);
# $res = [1,4,9,16,25]
# 该函数在类中的运用
# 类中第一个参数为数组 ['类名','方法名']
$arr = [1,2,3,4,5];
class foo
{
public function __construct($arr)
{
$res = array_map(['foo','map'], $arr);
print_r($res);
# $res = [1,4,9,16,25]
}
public function map($n)
{
return $n += time();
}
}
new foo($arr);
6 . array_filter
数组去空,callback过滤数组
$arr = [1,'',2,'',false,3,4];
array_filter($arr);
# [1,2,3,4]
7 . array_merge
合并,重置索引
$arr = [1=>'a',3=>'b',8=>'c'];
array_merge($arr);
# ['a','b','c']
8 . 数组排序
// 重置索引
sort 从低到高
rsort 从高到底
ksort 按键 从低到高
// 保持键名
krsort 按键 从高到低
arsort 从高到低
asort 从低到高
string
1 . json正确转换中文
$n = ['name'=>'小米'];
json_encode( $n )
{"name":"\u5c0f\u7c73"}
json_encode( $n,JSON_UNESCAPED_UNICODE );
{"name":"小米"}
2 . strval
获取变量的字符串值
# 将变量的标量类型转换成string类型
$a = 123;
$b = 'hello';
$c = 99.9;
$d = true;
strval($a); // string(0) "123"
strval($b); // string(0) "hello"
strval($c); // string(0) "99.9"
strval($d); // string(0) "1"
预定义常量
1 . DIRECTORY_SEPARATOR
路径分隔符
路径分隔符常量 "DIRECTORY_SEPARATOR"
window:"\"
linux:"/"
例:define('UPLOAD', dirname(__FILE__).DIRECTORY_SEPARATORY.'upload'.DIRECTORY_SEPARATORY)
结果:E:\www\shop\upload\
类与对象
1 . property_exists
判断属性是否存在
property_exists( 对象obj或对象名string
, 属性名
)
class a
{
protected $a;
protected $b;
}
$obj = new a();
if (property_exists($obj, 'a')) {
echo "exist";
}
文件与目录
1 .Linux中常常遇到权限问题,例如保存图片等
// 判断文件是否 **可读**
is_readable()
// 判断文件是否 **可写**
is_writable()
// 判断文件是否 **可执行**
is_executable()
2 .glob()
查找与模式匹配的文件或目录
可以替代opendir( ),具有打开目录句柄的能力,直接匹配文件
// 查找匹配的文件
glob('*.php') // 当前目录
array(2) {
[0]=> string(5) "a.php"
[1]=> string(7) "b.php"}
// 带目录匹配
glob(dirname(__FILE__).'\\'.'*.php');
array(2) {
[0]=> string(22) "E:\www\test\a.php"
[1]=> string(24) "E:\www\test\b.php"}
// 查找匹配的目录
$a = glob(ROOT_PATH.'\\*',GLOB_ONLYDIR); // 表示仅返回匹配到的目录
array(2) {
[0]=> string(22) "E:\www\test\aadir"
[1]=> string(21) "E:\www\test\bbdir" }