请看下面的代码:

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

当我使用PHP7.2时,它工作得很好,但在升级到8.1后,它抛出:

PHP致命错误:未捕获TypeError:ARRAY_SHIFT():参数#1($ARRAY)的类型必须为ARRAY,在/Path/to/qanda.php:469中给出的值为空

知道我怎么才能修好它吗?

推荐答案

只需使用空数组即可:

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

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

Php相关问答推荐

自定义WooCommerce查询字符串仅显示前3个产品

Mysqli_stmt::Execute():结果字段元数据中存在过早的EOF

在Google云存储对象上从PHP设置缓存控制TTL会更改错误的元数据

Laravel 10 -扩展现有的artisan命令?

Sylius php -如何将购物车传递到小枝模板(Sylius模板事件)

在Laravel中从动态嵌套数组中获取值

htaccess重命名index.php以在URL中显示为SEO的友好名称

WooCommerce在收据页面获取产品下载URL

表单提交返回空白页

用ajax获取文件 - CORS问题&;设置缓存?

调用模型[App\Models\Employee]上未定义的关系[title]

如何批量处理消息总线中的消息

execute_query 和prepare+execute 有什么区别?

从图像URL中获取文件扩展名?

正则表达式请帮我从内容中找到这个词

如何在不解压缩/重新压缩的情况下连接(连接)两个缩小的值

Laravel 从嵌套数组的第二级获取最后一项

图像不会显示在生产中的 Laravel 应用程序中

将参数传递给 laravel 9 工厂

多排序子数组 - 包含范围数据的子数组