浅谈PHP7中的一些小技巧


Posted in PHP onMay 29, 2021

相同的命名空间,相同的 use

在 PHP 7 之前,开发者经常这么做:

use Universe\Saiyan;
use Universe\SuperSaiyan;

从 PHP 7 开始:

use Universe\{Saiyan, SuperSaiyan};

函数和常量也是一样的。如果它们属于同一命名空间,则可以对它们进行分组。

常量可以是数组

define('NAMES', [
    'first'  => 'John',
    'middle' => 'Fitzgerald',
    'last'   => 'Kennedy'
]);
 
echo NAMES['last']; //显示 "Kennedy"

太空船操作符

它的写法是这样的<=>。它结合了比较。它表示 “小于,等于或大于”。当使用用户定义的比价函数对数组进行排序时,它非常有用,因为返回值是:

  • 0 如果值相等
  • 1 如果左边的值更大
  • -1 如果右边的值更大

那么,让我们对以下女演员进行排序:

$actressesWithAcademyAwards = [
    [ 'name' => 'Katharine Hepburn', 'awards' => 4 ],
    [ 'name' => 'Jessica Lange', 'awards' => 2 ],
    [ 'name' => 'Meryl Streep', 'awards' => 3 ],
    [ 'name' => 'Cate Blanchett', 'awards' => 2 ],
];

你可以用一行来代替多行来进行比较:

usort($actressesWithAcademyAwards, function ($a, $b) {
    return $a['awards'] <=> $b['awards'];
});
 
print_r($actressesWithAcademyAwards);

返回:

Array

(

    [0] => Array

        (

            [name] => Jessica Lange

            [awards] => 2

        )

    [1] => Array

        (

            [name] => Cate Blanchett

            [awards] => 2

        )

    [2] => Array

        (

            [name] => Meryl Streep

            [awards] => 3

        )

    [3] => Array

        (

            [name] => Katharine Hepburn

            [awards] => 4

        )

)

这是一个非常常见的 PHP 用例,因此太空船操作符可以节省时间。另外,它的可读性更强。

数组的第一 / 最后一个键 (PHP 7.3)

从 PHP 7.3 开始,你可以很容易地得到数组的第一个键和最后一个键:

$array = [ 'v' => 1, 'i' => 2, 'p' => 3 ];
 
$firstKey = array_key_first($array);
$lastKey = array_key_last($array);
 
print_r($firstKey); // v
print_r($lastKey); // p

真的很简单,因为它不影响内部数组指针。

数组延展操作符 (PHP 7.4)

该特性可以实现以下功能:

$abc = range('a', 'c');
$def = range('d', 'f');
$ghi = range('g', 'i');
$all = [...$abc, ...$def, ...$ghi, 'j'];
print_r($all);

得到:

Array

(

    [0] => a

    [1] => b

    [2] => c

    [3] => d

    [4] => e

    [5] => f

    [6] => g

    [7] => h

    [8] => i

    [9] => j

)

在大多数情况下,它基本取代了array_merge().

在大多数情况下,它基本取代了array_merge().

箭头函数 (PHP 7.4)

请注意,因为现在它指的是只有一个表达式的短闭包(因此有了 “短” 这个字):

$c = 3;
$addC = fn($x) => $x + $c;
echo $addC(70); // 73

不需要use关键字。

常量的可见性 (PHP7.1)

class Mother {
    private const ERROR_LEVEL_1 = 'achtung';
}

可见性有助于确保不应该被覆盖的内容不会被覆盖。在 PHP 7.1 之前,对于类常量(始终是公共的)来说是不可能的。

Constant visibility (PHP7.1)

class Mother {
    private const ERROR_LEVEL_1 = 'achtung';
}

可见性有助于确保不应被覆盖的内容不被覆盖。在PHP 7.1之前,对于类常量(始终是公共的)这是不可能的。

结语

PHP 7 是强大的。它速度更快,功能更强大。你知道 PHP 7 可以完成这些事吗?

以上就是浅谈PHP7中的一些小技巧的详细内容,更多关于PHP7中的一些小技巧的资料请关注三水点靠木其它相关文章!

PHP 相关文章推荐
php下实现折线图效果的代码
Apr 28 PHP
利用static实现表格的颜色隔行显示的代码
Sep 02 PHP
php 连接mssql数据库 初学php笔记
Mar 01 PHP
linux系统上支持php的 iconv()函数的方法
Oct 01 PHP
解析PHP中的unset究竟会不会释放内存
Jul 18 PHP
PHP函数in_array()使用详解
Aug 20 PHP
PHP查找与搜索数组元素方法总结
Jun 12 PHP
Laravel5.1数据库连接、创建数据库、创建model及创建控制器的方法
Mar 29 PHP
PHP分页显示的方法分析【附PHP通用分页类】
May 10 PHP
Laravel框架基于ajax和layer.js实现无刷新删除功能示例
Jan 17 PHP
PHP检查URL包含特定字符串实例方法
Feb 11 PHP
Laravel框架Eloquent ORM删除数据操作示例
Dec 03 PHP
详解Laravel服务容器的优势
May 29 #PHP
如何用RabbitMQ和Swoole实现一个异步任务系统
浅谈Laravel中使用Slack进行异常通知
May 29 #PHP
详解Go与PHP的语法对比
May 29 #PHP
详解php中流行的rpc框架
如何在Mac上通过docker配置PHP开发环境
浅谈如何提高PHP代码质量之端到端集成测试
May 28 #PHP
You might like
php $_SERVER[&quot;REQUEST_URI&quot;]获取值的通用解决方法
2010/06/21 PHP
php调用dll的实例操作动画与代码分享
2012/08/14 PHP
PHP中使用imagick实现把PDF转成图片
2015/01/26 PHP
php析构函数的简单使用说明
2015/08/24 PHP
Laravel数据库读写分离配置的方法
2019/10/13 PHP
收集json解析的四种方法分享
2014/01/17 Javascript
js中的hasOwnProperty和isPrototypeOf方法使用实例
2014/06/06 Javascript
JavaScript数组方法总结分析
2016/05/06 Javascript
Three.js学习之Lamber材质和Phong材质
2016/08/04 Javascript
jQuery多个版本和其他js库冲突的解决方法
2016/08/11 Javascript
微信小程序 wxapp内容组件 text详细介绍
2016/10/31 Javascript
jQuery滑动到底部加载下一页数据的实例代码
2017/05/22 jQuery
angularjs2 ng2 密码隐藏显示的实例代码
2017/08/01 Javascript
详解利用 Express 托管静态文件的方法
2017/09/18 Javascript
解决vue select当前value没有更新到vue对象属性的问题
2018/08/30 Javascript
详解如何解决Vue和vue-template-compiler版本之间的问题
2018/09/17 Javascript
vue 实现通过vuex 存储值 在不同界面使用
2019/11/11 Javascript
Vue页面跳转传递参数及接收方式
2020/09/09 Javascript
Python版微信红包分配算法
2015/05/04 Python
Python装饰器用法实例分析
2019/01/14 Python
python中正则表达式与模式匹配
2019/05/07 Python
python异常处理try except过程解析
2020/02/03 Python
使用tensorflow框架在Colab上跑通猫狗识别代码
2020/04/26 Python
解决Pycharm 运行后没有输出的问题
2021/02/05 Python
详解HTML5中的元素与元素
2015/08/17 HTML / CSS
瑞士国际航空官网:SWISS
2016/07/21 全球购物
Avène雅漾美国官方网站:敏感肌肤护理专家
2016/10/24 全球购物
爱尔兰灯和灯具网上商店:Lights.ie
2018/03/26 全球购物
Armor Lux法国官方网站:水手服装、成衣和内衣
2020/05/26 全球购物
商场促销活动总结
2014/07/10 职场文书
综合素质评价自我评价
2015/03/06 职场文书
网络营销实训总结
2015/08/03 职场文书
护士心得体会范文
2016/01/25 职场文书
七年级作文之下雨天
2019/12/23 职场文书
golang 比较浮点数的大小方式
2021/05/02 Golang
如何制作自己的原生JavaScript路由
2021/05/05 Javascript