如何处理 Null 上的 array_shift() ?
P粉300541798
P粉300541798 2024-02-25 22:27:30
0
2
396

请看一下这段代码:

$end = isset($newvar) ? array($newvar) : null;
while($ends = array_shift($end)){
  ...

当我使用 PHP 7.2 时运行良好,但升级到 8.1 后,它抛出:

PHP 致命错误:未捕获类型错误:array_shift():参数 #1 ($array) 必须是数组类型,在 /path/to/qanda.php:469 中给出 null

知道如何修复它吗?

P粉300541798
P粉300541798

全部回复(2)
P粉237029457

最基本的解决方案是将 null 值替换为空数组,以符合类型要求:

$end = isset($newvar) ? array($newvar) : [];
while($ends = array_shift($end)){

您还可以创建数组并在 $newvar 上使用空合并运算符

$end = [$newvar ?? null];
while($ends = array_shift($end)){

但我不明白为什么您要创建一个具有单个值的数组,然后使用 array_shift 的返回值创建一个循环。循环体只会运行一次。 也许只是使用一个条件?

if (isset($newvar)) {
P粉696146205

只需使用空数组即可:

$end = isset($newvar) ? array($newvar) : [];

array_shift 将在第一次调用时返回 null空数组作为输入,因此循环不会执行。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!