PHP8.1新特性之字符串解包数组/array_is_list

作者: 温新

分类: 【PHP基础】

阅读: 1890

时间: 2022-02-06 12:05:35

hi,我是温新,一名PHPer

Array unpacking support for string-keyed arrays

PHP7.4中已经可以对数组进行解包,但只适用于数组键。

php8.1

<?php
    
$arr1 = [1,2, 'a'=>['name'=>'lucy']];
$arr2 = [3,4, 'a'=>['age'=>19]];

$arr = ['a'=>0, ...$arr1, ...$arr2];
var_dump($arr);
var_dump(array_merge($arr1, $arr2));

小于php8.1

$arrayA = ['a' => 1];
$arrayB = ['b' => 2];

$result = array_merge(['a' => 0], $arrayA, $arrayB);

// ['a' => 1, 'b' => 2]

array_is_list

array_is_list严格检查数组中的键是否按照数字顺序排列。

$arr = ['a', 'b', 'c'];
var_dump(array_is_list($arr)); // true

$arr = [1=>'a', 'b', 'c'];
var_dump(array_is_list($arr)); // false

$arr = [0=>'a', 'b', 'c'];
var_dump(array_is_list($arr)); // true

$arr = [0=>'a', 2=>'b', 'c'];
var_dump(array_is_list($arr)); // false

array_is_list严格严格数组中键的值是否从0开始排序且不能中断。

静态数据一致性

php8.1

<?php

class Num
{
	public static function incr()
	{
		static $num = 0;
		$num++;
		var_dump($num);
	}
}


class Test extends Num
{
}

Num::incr();  // 1
Num::incr();   // 2

Test::incr(); // 3
Test::incr(); // 4

小于php8.1

<?php

class Num
{
	public static function incr()
	{
		static $num = 0;
		$num++;
		var_dump($num);
	}
}


class Test extends Num
{
}

Num::incr(); // 1
Num::incr(); // 2

Test::incr(); // 1
Test::incr(); // 2

坚持不懈

每天进行一步点,就一点点

请登录后再评论