发布于 2026-01-06 2 阅读
0

PHP能做到吗?

PHP能做到吗?

PHP 7 显著提升了整体性能。它确实引入了一些重要特性,例如空值合并运算符和返回类型声明。如果您还不了解这些特性,强烈建议您查阅 PHP 文档。

以下是一些不太为人所知但可能很有用的功能。

相同的命名空间,相同的用途

在 PHP 7 之前,开发人员通常会这样做:

use Universe\Saiyan;
use Universe\SuperSaiyan;
Enter fullscreen mode Exit fullscreen mode

自 PHP 7 起:

use Universe\{Saiyan, SuperSaiyan};
Enter fullscreen mode Exit fullscreen mode

函数和常量也是如此。如果它们属于同一个命名空间,就可以将它们分组。

常量可以是数组

define('NAMES', [
    'first'  => 'John',
    'middle' => 'Fitzgerald',
    'last'   => 'Kennedy'
]);

echo NAMES['last']; //displays "Kennedy"
Enter fullscreen mode Exit fullscreen mode

飞船操作员

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

  • 如果值相等,则为 0。
  • 1 如果左侧的值大于
  • 如果右侧的值大于 -1,则返回 -1

来源

现在让我们对以下女演员数组进行排序:

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

与其写多行代码进行比较,不如用一行代码完成:

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

print_r($actressesWithAcademyAwards);
Enter fullscreen mode Exit fullscreen mode

返回结果:

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
        )
)
Enter fullscreen mode Exit fullscreen mode

这是一个非常常见的 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
Enter fullscreen mode Exit fullscreen mode

非常干净利落,因为它不会影响内部数组指针。

数组中的扩展运算符(PHP 7.4)

此功能允许执行以下操作:

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

你将获得:

Array
(
    [0] => a
    [1] => b
    [2] => c
    [3] => d
    [4] => e
    [5] => f
    [6] => g
    [7] => h
    [8] => i
    [9] => j
)
Enter fullscreen mode Exit fullscreen mode

它基本上可以替代array_merge()大多数情况下的现有产品。

箭头函数(PHP 7.4)

请注意,目前它仅适用于只有一个表达式的简短闭包(因此称为“简短”):

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

无需use关键词。

来源

持续可见性(PHP7.1)

class Mother {
    private const ERROR_LEVEL_1 = 'achtung';
}
Enter fullscreen mode Exit fullscreen mode

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

来源

包起来

PHP 7 功能强大。它速度更快,而且拥有许多出色的特性。你知道 PHP 7 能做到这些吗?

文章来源:https://dev.to/spo0q/php-7-can-do-that-57ol