20+个值得收藏的PHP常用小技巧

 4081

本篇文章给大家分享一些PHP实际开发中常用的技巧和方法,以让大家增加摸鱼的时间,快来收藏学习吧!


20+个值得收藏的PHP常用小技巧


1、解决跨域问题

  1. public function __construct()
  2. {
  3.     parent::__construct();
  4.     header('Access-Control-Allow-Origin:*');    //跨域
  5. }


2、json_encode 中文不转码

  1. die( json_encode( $result,JSON_UNESCAPED_UNICODE ) );


3、二维数组排序

  1. $users = array(
  2.     array('name' => 'xiao1', 'age' => 20),
  3.     array('name' => 'xiao2', 'age' => 18),
  4.     array('name' => 'xiao3', 'age' => 22)
  5. );
  6.   
  7. /*按照年龄升序*/
  8. //要将age提取出来存储到一维数组里,然后按照age升序排列
  9. $ages= array_column($users, 'age');
  10. array_multisort($ages, SORT_ASC, $users);
  11.   
  12. /*先按照年龄升序,再按照姓名降序*/
  13. $ages= array_column($users, 'age');
  14. $names = array_column($users, 'name');
  15. array_multisort($ages, SORT_ASC, $names, SORT_DESC, $users);


4、如果Linux服务器上php.ini关闭了错误提示,导致结果406,500。打印错误信息。

  1. ini_set("display_errors", "On");
  2. error_reporting(E_ALL | E_STRICT);


5、list 的使用

  1. //list使用
  2. public function test(){
  3.     list($name, $sex) = $this->getInfo();
  4.     echo "姓名:{$name},性别:{$sex}";
  5. }
  6.   
  7. public function getInfo(){
  8.     return ['张三', '男'];
  9. }
  10.   
  11. //输出:姓名:张三,性别:男


6、函数 array_column()的使用

  1. $array = [
  2.     ['id'=>'99', 'name'=>'九十九'],
  3.     ['id'=>'88', 'name'=>'八十八'],
  4.     ['id'=>'77', 'name'=>'七十七'],
  5. ];
  6. $arr1 = array_column($array, 'name');   
  7. //输出:array (0 => '九十九',1 => '八十八',2 => '七十七',)
  8. $arr2 = array_column($array, 'name', 'id'); 
  9. //输出:array (  99 => '九十九',  88 => '八十八',  77 => '七十七',)

array_column() 与 array_combine() 搭配使用

  1. $ids = array_column($array, 'id');
  2. $arrayCombine = array_combine($ids, $array);
  3. /*$arrayCombine 输出:
  4.  array ( 
  5.      99 => array ( 'id' => '99', 'name' => '九十九', ), 
  6.      88 => array ( 'id' => '88', 'name' => '八十八', ), 
  7.      77 => array ( 'id' => '77', 'name' => '七十七', ), 
  8.  )*/

7、一维数组去重,删除0,null,索引重置

  1. $array = array(0,1,0,2,null,1,3,4,null,0);
  2. $array = array_values(array_unique(array_diff($array, [0, null]))); //去除0,null;去重
  3. var_export($array);
  4.   
  5. /*输出:
  6. array (
  7.   0 => 1,
  8.   1 => 2,
  9.   2 => 3,
  10.   3 => 4,
  11. )
  12. */


8、把秒转为时分秒

把秒数转为时分秒,gmstrftime函数,不过该函数仅限于24小时内的秒数转换。

  1. $r = gmstrftime('%H:%M:%S',(3600*23)+123);
  2. var_export($r);
  3. //输出: '23:02:03'


9、接口返回

接口正常返回 1 ,异常返回 -1 。如果数据为空,是1;-1是参数异常或者逻辑错误。


10、四舍五入保留2位小数。

  1. round($x, 2);


11、隐藏手机号中间4位。

  1. $num = "13711111111";
  2. $str = substr_replace($num,'****',3,4);


12、换行变量 PHP_EOL

使用场景:一个小小的换行,其实在不同的平台有着不同的实现。

本来在unix世界换行就用/n来代替,但是windows为了体现他的不同,就用/r/n,更有意思的是在mac中用/r。

PHP_EOL就是php中已经定义好的变量,代表php的换行符。

这个变量会根据平台而变,在windows下会是/r/n,在linux下是/n,在mac下是/r。


13、PHP判断数组 键 是否存在 isset(),array_key_exists(),empty()

  1. $array = ['a'=>'我是第一个', 'b'=>'我是第二个', 'c'=>'我是第三个', 'f' => null];
  2. if(isset($array['a'])) {
  3.     echo 'a存在 ';
  4. } else {
  5.     echo 'a不存在 ';
  6. }
  7.  
  8. if(array_key_exists('d', $array)) {
  9.     echo 'd存在 ';
  10. } else {
  11.     echo 'd不存在 ';
  12. }
  13.  
  14. if (empty($array['f'])) {
  15.     echo 'f不存在';
  16. } else {
  17.     echo 'f存在,且不为 null,0,"0",false';
  18. }
  19.   
  20. //a存在 d不存在 f不存在


14、引入js的文件,带参数?_=1553829159194

有时候有些地址后面有个这样的参数 ?_=1553829159194

http://***/index/index?_=1553829159194

在url后面加一个timestamp时间戳,保证每次的url都是变化的,这样就不会读取浏览器缓存了。


15、接口测试工具

接口测试工具推荐 postman


16、如果最后一个字是“区”,就删除。

  1. $distName = '南山区';
  2. $lastChar = mb_substr($distName, -1);
  3. if($lastChar=='区'){
  4.     $lastChar = mb_substr($distName, 0, -1);
  5. }
  6. echo $lastChar;


17、假设页面内容如下:

后台返回的数据结构:

  1. {"eat":["大米","小麦"],"drink":["水","茶"]}

不太好,这样还要前端对应到相关字段,eat吃的;drink是喝的。

最好这样返回:

  1. [{"name":"吃的","list":["大米","小麦"]},{"name":"喝的","list":["水","茶"]}]


18、创建0777目录,mkdir,chmod配合使用

用mkdir创建在windows没问题,但是在linux使用mkdir创建文件夹会出现没有最大权限0777的情况;所以要再使用chmod函数,(chmod函数针对linux创建文件夹权限不足的情况)

  1. //若目录不存在则创建目录
  2. $filePath = '../file/20900101';
  3. if(@!file_exists($filePath)){
  4.     mkdir($filePath, 0777, true);
  5.     chmod($filePath, 0777);
  6. }


19、foreach中引用赋值

代码

  1. $temp = [
  2.             [ 'id' => 1, 'name' => 'name1', 'age' => 'age1', 'time' => 'time1' ],
  3.             [ 'id' => 2, 'name' => 'name2', 'age' => 'age2', 'time' => 'time2' ]
  4.         ];
  5.  
  6. # 清空原数据
  7. $data = $temp;
  8. foreach ($data as &$value){
  9.     $value = [];
  10. }
  11. echo '<pre>';
  12. print_r($data);
  13.  
  14. # 重置原数据
  15. $data = $temp;
  16. foreach ($data as &$value){
  17.     $value = [
  18.         'hobby' => 1
  19.     ];
  20. }
  21. print_r($data);
  22.  
  23. # 追加原数据
  24. $data = $temp;
  25. foreach ($data as &$value){
  26.     $value['hobby'] = 1;
  27. }
  28. print_r($data);

打印

  1. Array
  2. (
  3.     [0] => Array
  4.         (
  5.         )
  6.  
  7.     [1] => Array
  8.         (
  9.         )
  10.  
  11. )
  12. Array
  13. (
  14.     [0] => Array
  15.         (
  16.             [hobby] => 1
  17.         )
  18.  
  19.     [1] => Array
  20.         (
  21.             [hobby] => 1
  22.         )
  23.  
  24. )
  25. Array
  26. (
  27.     [0] => Array
  28.         (
  29.             [id] => 1
  30.             [name] => name1
  31.             [age] => age1
  32.             [time] => time1
  33.             [hobby] => 1
  34.         )
  35.  
  36.     [1] => Array
  37.         (
  38.             [id] => 2
  39.             [name] => name2
  40.             [age] => age2
  41.             [time] => time2
  42.             [hobby] => 1
  43.         )
  44.  
  45. )


20、url生成器

  1. public function test() {
  2.     $url = self::getUrl('http://www.test.com', ['id' => 3, 'other' => '好的']);
  3.     echo $url . '<br>';     //打印:http://www.test.com?id=3&other=%E5%A5%BD%E7%9A%84
  4.     echo urldecode($url);   //打印:http://www.test.com?id=3&other=好的
  5. }
  6.  
  7. public function getUrl($apiUrl, $param = []){
  8.     $param = http_build_query($param);
  9.     return $apiUrl . '?' . $param;
  10. }

21、写接口空数组返回对象形式

$data为空时强转为 object类型后,json_encode的值是{},不强转的话则是==[]==,是否需要强转看实际情况

  1. $data = $data ? $data : (object)$data;


原文地址:https://juejin.cn/post/6973956902094897189(不定时更新)

作者:有上进心的东伯雪鹰


TAG标签:
本文网址:https://www.zztuku.com/index.php/detail-9045.html
站长图库 - 20+个值得收藏的PHP常用小技巧
申明:如有侵犯,请 联系我们 删除。

评论(0)条

您还没有登录,请 登录 后发表评论!

提示:请勿发布广告垃圾评论,否则封号处理!!

    编辑推荐

    CDR快速制作质感立体字