php一些实用小众的用法
1:array_filter //回调函数过滤数组元素,默认过滤空值
改方法常用于语过滤数组空值,但有个问题,如果数组元素有0的话,也会被过滤掉。
<?php $arr = [ 'name'=>'liling', 'sex' =>'男', 'phone' =>'', 'age' =>'0' ]; $arr = array_filter($arr); print_r($arr);
以上输出: Array ( [name] => liling [sex] => 男 ) 过滤掉了 age 0.
你如果我们要过滤空值,但不过滤 0 怎么办?手册上有介绍,可以用回调来实现:
<?php $arr = [ 'name'=>'liling', 'sex' =>'男', 'phone' =>'', 'age' =>'0' ]; $params = array_filter($arr,function($back){ if($back == '' || $back === null){ //只过滤指定的情况 return false; } return true; }); print_r($params);输出:Array ( [name] => liling [sex] => 男 [age] => 0 )
2:array_multisort //数组排序,默认升序一般我们这样用
<?php $arr = [1,3,7,9,5]; array_multisort ($arr); print_r($arr);
升序:Array ( [0] => 1 [1] => 3 [2] => 5 [3] => 7 [4] => 9 )
<?php $arr = [1,3,7,9,5]; array_multisort ($arr,SORT_DESC); //降序 print_r($arr);
降序:Array ( [0] => 9 [1] => 7 [2] => 5 [3] => 3 [4] => 1 )
一维数组很简单,那么多维数组怎么办?比如二维
<?php $arr = [ [ 'name'=>'li', 'time'=>'2021-01-02' ], [ 'name'=>'chen', 'time'=>'2021-03-02' ], [ 'name'=>'zao', 'time'=>'2021-02-12' ], ]; $sort = array_column($arr,'time'); //把time单独取出来,生成一个一维数组 array_multisort($sort ,SORT_DESC,$arr); // 然后按照时间降序 print_r($arr);
Array | |
( | |
[0] => Array | |
( | |
[name] => chen | |
[time] => 2021-03-02 | |
) | |
[1] => Array | |
( | |
[name] => zao | |
[time] => 2021-02-12 | |
) | |
[2] => Array | |
( | |
[name] => li | |
[time] => 2021-01-02 | |
) | |
) |
3:rtrim($url,"\/\\\t\n\r\0\x0B").'/'; 删除拼接地址后面的符号,这里一定不能用单引号rtrim()函数用于删除字符串末尾的指定字符。在给定的示例中,rtrim($str,'\/\\\t\n\r\0\x0B')将删除字符串末尾的斜杠(/),反斜杠(\),制表符(\t),换行符(\n),回车符(\r),空字符(\0)和垂直制表符(\x0B)。然后,通过在字符串末尾加上一个斜杠(/),确保字符串以斜杠结尾。确保URL结尾的斜杠一致,以避免链接问题。