20+PHP常用小技巧(转载)

2021-08-12  本文已影响0人  浅浅而谈

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

image

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 => '七十七',)
$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、把秒转为时分秒

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

9、接口返回

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

15、接口测试工具

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

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

17、假设页面内容如下:

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

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

//若目录不存在则创建目录
$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 = $data ? $data : (object)$data;

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

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

本文转载自:https://www.php.cn/php-weizijiaocheng-480672.html

推荐学习:《PHP视频教程

上一篇下一篇

猜你喜欢

热点阅读