目录

  • 前言
  • 1、解决跨域问题
  • 2、json_encode 中文不转码
  • 3、二维数组排序
  • 4、如果Linux服务器上php.ini关闭了错误提示,导致结果406,500。打印错误信息。
  • 5、list 的使用
  • 6、函数 array_column()的使用
  • 7、一维数组去重,删除0,null,索引重置
  • 8、把秒转为时分秒
  • 9、接口返回
  • 10、四舍五入保留2位小数。
  • 11、隐藏手机号中间4位。
  • 12、换行变量 PHP_EOL
  • 13、PHP判断数组 键 是否存在 isset(),array_key_exists(),empty()
  • 14、引入js的文件,带参数?_=1553829159194
  • 15、接口测试工具
  • 16、如果最后一个字是“区”,就删除。
  • 17、假设页面内容如下:
  • 18、创建0777目录,mkdir,chmod配合使用
  • 19、foreach中引用赋值
  • 20、url生成器
  • 21、写接口空数组返回对象形式

前言

  • 鉴于我之前写的这篇 PHP常用方法(不定时更新) 可读性不太好,以后都在这里更新

1、解决跨域问题

public function __construct()
{parent::__construct();header('Access-Control-Allow-Origin:*');    //跨域
}

2、json_encode 中文不转码

die( json_encode( $result,JSON_UNESCAPED_UNICODE ) );

3、二维数组排序

$users = array(array('name' => 'xiao1', 'age' => 20),array('name' => 'xiao2', 'age' => 18),array('name' => 'xiao3', 'age' => 22)
);/*按照年龄升序*/
//要将age提取出来存储到一维数组里,然后按照age升序排列
$ages= array_column($users, 'age');
array_multisort($ages, SORT_ASC, $users);/*先按照年龄升序,再按照姓名降序*/
$ages= array_column($users, 'age');
$names = array_column($users, 'name');
array_multisort($ages, SORT_ASC, $names, SORT_DESC, $users);

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

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

5、list 的使用

//list使用
public function test(){list($name, $sex) = $this->getInfo();echo "姓名:{$name},性别:{$sex}";
}public function getInfo(){return ['张三', '男'];
}//输出:姓名:张三,性别:男

6、函数 array_column()的使用

$array = [['id'=>'99', 'name'=>'九十九'],['id'=>'88', 'name'=>'八十八'],['id'=>'77', 'name'=>'七十七'],
];
$arr1 = array_column($array, 'name');
//输出:array (0 => '九十九',1 => '八十八',2 => '七十七',)
$arr2 = array_column($array, 'name', 'id');
//输出:array (  99 => '九十九',  88 => '八十八',  77 => '七十七',)
  • array_column() 与 array_combine() 搭配使用
$ids = array_column($array, 'id');
$arrayCombine = array_combine($ids, $array);
/*$arrayCombine 输出:array ( 99 => array ( 'id' => '99', 'name' => '九十九', ), 88 => array ( 'id' => '88', 'name' => '八十八', ), 77 => array ( 'id' => '77', 'name' => '七十七', ), )*/

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

$array = array(0,1,0,2,null,1,3,4,null,0);
$array = array_values(array_unique(array_diff($array, [0, null])));    //去除0,null;去重
var_export($array);/*输出:
array (0 => 1,1 => 2,2 => 3,3 => 4,
)
*/

8、把秒转为时分秒

  • 把秒数转为时分秒,gmstrftime函数,不过该函数仅限于24小时内的秒数转换。
$r = gmstrftime('%H:%M:%S',(3600*23)+123);
var_export($r);
//输出: '23:02:03'

9、接口返回

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

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

round($x, 2);

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

$num = "13711111111";
$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()

$array = ['a'=>'我是第一个', 'b'=>'我是第二个', 'c'=>'我是第三个', 'f' => null];
if(isset($array['a'])) {echo 'a存在 ';
} else {echo 'a不存在 ';
}if(array_key_exists('d', $array)) {echo 'd存在 ';
} else {echo 'd不存在 ';
}if (empty($array['f'])) {echo 'f不存在';
} else {echo 'f存在,且不为 null,0,"0",false';
}//a存在 d不存在 f不存在

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

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

  • http://***/index/index?_=1553829159194
  • 在url后面加一个timestamp时间戳,保证每次的url都是变化的,这样就不会读取浏览器缓存了。

15、接口测试工具

  • 接口测试工具推荐 postman

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

$distName = '南山区';
$lastChar = mb_substr($distName, -1);
if($lastChar=='区'){$lastChar = mb_substr($distName, 0, -1);
}
echo $lastChar;

17、假设页面内容如下:

  • 后台返回的数据结构:
{"eat":["大米","小麦"],"drink":["水","茶"]}
  • 不太好,这样还要前端对应到相关字段,eat吃的;drink是喝的。

  • 最好这样返回:

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

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

  • 用mkdir创建在windows没问题,但是在linux使用mkdir创建文件夹会出现没有最大权限0777的情况;所以要再使用chmod函数,(chmod函数针对linux创建文件夹权限不足的情况)
//若目录不存在则创建目录
$filePath = '../file/20900101';
if(@!file_exists($filePath)){mkdir($filePath, 0777, true);chmod($filePath, 0777);
}

19、foreach中引用赋值

  • 代码
$temp = [[ 'id' => 1, 'name' => 'name1', 'age' => 'age1', 'time' => 'time1' ],[ 'id' => 2, 'name' => 'name2', 'age' => 'age2', 'time' => 'time2' ]];# 清空原数据
$data = $temp;
foreach ($data as &$value){$value = [];
}
echo '<pre>';
print_r($data);# 重置原数据
$data = $temp;
foreach ($data as &$value){$value = ['hobby' => 1];
}
print_r($data);# 追加原数据
$data = $temp;
foreach ($data as &$value){$value['hobby'] = 1;
}
print_r($data);
  • 打印
Array
([0] => Array()[1] => Array())
Array
([0] => Array([hobby] => 1)[1] => Array([hobby] => 1))
Array
([0] => Array([id] => 1[name] => name1[age] => age1[time] => time1[hobby] => 1)[1] => Array([id] => 2[name] => name2[age] => age2[time] => time2[hobby] => 1))

20、url生成器

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

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

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

PHP常用方法(不定时更新)相关推荐

  1. apue第四章习题的一些拙见(不定时更新)

    写在前面:最近要期末考试,看来真的是要不定时更新啦XD apue4.1: 由于在这里lstat是不跟随符号文件的,而stat是跟随符号文件的,这样一来,如果使用stat,而不使用lstat那么就无法观 ...

  2. [Android Traffic] 调整定时更新的频率(C2DM与退避算法)

    转载自: http://blog.csdn.net/kesenhoo/article/details/7395253 Minimizing the Effect of Regular Updates[ ...

  3. 【PaddlePaddle系列】报错解决方法合集 (不定时更新)

    [PaddlePaddle系列]报错解决方法合集 (不定时更新) 参考文章: (1)[PaddlePaddle系列]报错解决方法合集 (不定时更新) (2)https://www.cnblogs.co ...

  4. TensorFlow 常见错误与解决方法——长期不定时更新

    TensorFlow 常见错误与解决方法--长期不定时更新 参考文章: (1)TensorFlow 常见错误与解决方法--长期不定时更新 (2)https://www.cnblogs.com/seni ...

  5. 博客搬家了--这次搬进自己家的了,不过博客园的会定时更新!新家地址: http://blog.woshimaijia.com/...

    博客搬家了--这次搬进自己家的了,不过博客园的会定时更新! 新家地址: http://blog.woshimaijia.com/ 博客园的博客很稳定,也是我很喜欢的地方 这里的文章我也会陆续更新的.. ...

  6. Python3高并发定时更新任务进程池和线程池的使用

    Python3高并发定时更新任务进程池和线程池的使用 背景:需要定时对数据库的某一张表做更新 不管用多线程还是多进程只能利用当前一台机器的计算能力,可以考虑使用celery这样的工具,后期可以横向扩展 ...

  7. [react] 怎么定时更新一个组件?

    [react] 怎么定时更新一个组件? class Clock extends React.Component{constructor(props){super(props);this.state={ ...

  8. 不重启服务如何定时更新进程中的一个对象

    场景: 主进程中初始化了一个对象(C++模块的对象,占用内存比较大,因为加载了一个很大的词表),然后启动子进程,并在子进程中使用这个对象,子进程对这个对象只读,不写 这个对象需要周期性的更新,因为要在 ...

  9. [原创]软件测试工具简介及下载地址(不定时更新)

    [原创]软件测试工具简介及下载地址(不定时更新) 以下所有测试工具均来源网络收集,由于最早的下载分享链接失效,所有从新整理,所有软件通过百度网盘提供下载,不涉及到任何破解! 1 测试工具链接: htt ...

  10. python采集代理ip_Python采集代理ip并判断是否可用和定时更新的方法

    网上有很多免费的ip地址,都是可以使用的,但是如果手动来获取太麻烦,这里通过Python自动抓取,可以批量获取. 代码如下: # -*- coding: utf-8 -*- import re imp ...

最新文章

  1. 为什么神经网络的激活函数必须使用线性函数?
  2. 烂泥:vcenter5.5无AD下的安装与配置
  3. 灯光插件_Light Kit Pro 3灯光插件
  4. 支付二维码php能实现吗_(实用篇)微信支付扫码支付php版
  5. bzoj2751[HAOI2012]容易题(easy)
  6. 计算机网络原理第一章习题3-24 3-25
  7. 详解 | 求你别用效率低下的I/O了,要不试试这种I/O
  8. python matplotlib画图遇到的问题——画多个子图
  9. 使用echarts(一) 第一次使用echarts
  10. android底部导航栏选中动画,Android选中突出背景效果的底部导航栏功能
  11. typescript parseint不能传number_Typescript 使用日志
  12. android采集声卡,农步祥作品 - Android系统下使用USB声卡音质测评报告 [Soomal]
  13. 图片导入ppt后模糊_PPT另存为图片不清晰|为什么PPT导出图片不清晰
  14. ping丢包故障处理
  15. ​元宇宙与AI热度不减,Gartner 2023 年十大战略技术趋势完整解析
  16. FMI飞马网 |【线上直播】持续集成在京东研发的落地及应用
  17. 百度版ChatGPT:文心一言发布会盛大召开!
  18. 标贝科技|AI企业级应用榜单发布,百度、讯飞、标贝科技等50家产品上榜
  19. C/S和B/S平滑模糊的时代----推荐:云计算时代的生命周期(吕建伟)
  20. Halcon九点及旋转标定流程

热门文章

  1. JUnit for Android入门2 JUnit断言
  2. excel去重_提高数据处理效率的10个excel小技巧
  3. Spark2.1特征处理:提取/转换/选择
  4. hive replace_Hive新增字段(column)后,旧分区无法更新数据问题
  5. 51nod1001数组中和等于K的数对
  6. java web 局部刷新页面_如何实现页面局部刷新(Java)
  7. linux可以同时有两个mysql吗_Linux 同一系统安装两个MySQL
  8. mysql dump 主从_mysqldump导出数据中带主从同步的状态信息参数:master-data和dump-slave...
  9. Oracle在线撤销表空间,Oracle创建、管理撤销表空间
  10. 分布式锁是啥?对比下redis和zk两种分布式锁的优劣?