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
http://***/index/index?_=1553829159194在url后面加一个timestamp时间戳,保证每次的url都是变化的,这样就不会读取浏览器缓存了。有时候有些地址后面有个这样的参数 ?_=1553829159194
15、接口测试工具
接口测试工具推荐 postman16、如果最后一个字是“区”,就删除。
$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@R_301_6343@夹会出现没有最大权限0777的情况;所以要再使用chmod函数,(chmod函数针对linux@R_301_6343@夹权限不足的情况)//若目录不存在则创建目录$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%84 echo 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;
原文地址:https://juejin.cn/post/6973956902094897189(不定时更新)
作者:有上进心的东伯雪鹰
推荐学习:《PHP视频教程》 总结
以上是内存溢出为你收集整理的20+个值得收藏的PHP常用小技巧(分享)全部内容,希望文章能够帮你解决20+个值得收藏的PHP常用小技巧(分享)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)