正如它在关于函数的PHP 手册中所说array_unshift():
7.3.0 现在可以只用一个参数调用这个函数。以前,至少需要两个参数。
我没听懂。如何使用只有一个参数的这样的函数?
我试图猜测,但没有任何反应:
$arr = ['one' => 'test', 'two' => 'some'];
array_unshift($arr);
print_r($arr);
// Result:
// Array
// (
// [one] => test
// [two] => some
// )
$arr1 = ['what', 'ever'];
array_unshift($arr1);
print_r($arr1);
// Array
// (
// [0] => what
// [1] => ever
// )
Run Code Online (Sandbox Code Playgroud)
数组没有改变。
有谁知道 PHP 贡献者的建议是什么?
我认为我的评论可能需要更多解释,希望这能让它更清楚。
如果我有两个数组,并且我想添加从第二个数组到第一个数组末尾的所有元素,array_push与解包运算符结合使用可以让我这样做:
$a = [1, 2, 3];
$b = [4, 5, 6];
array_push($a, ...$b);
Run Code Online (Sandbox Code Playgroud)
$a就是现在[1, 2, 3, 4, 5, 6]
(array_unshift让我做同样的事情,但将元素添加到数组的开头。使用array_push我认为使示例更清晰)
在 PHP 7.3 之前,如果$b为空,则会引发警告,因为解包空数组相当于仅传递第一个参数。请参阅此处的演示: https: //3v4l.org/GZQoo。$a仍然不会改变,这是期望的结果,所以它只是日志中不必要的噪音。
在实际示例中,如果$b是由另一个函数(调用数据库等)生成的,那么如果没有此更改,我需要if (!empty($b) ...在运行代码之前调用以防止出现警告。现在,它默默地工作。
注意:还有其他方法可以将一个数组附加到另一个数组(array_merge、array_replace和+运算符),但它们都有特定的合并和删除重复共享密钥的方法。此方法只是将第二个值的所有值附加到第一个值,而不管键是什么。
| 归档时间: |
|
| 查看次数: |
256 次 |
| 最近记录: |