提问人:Martin AJ 提问时间:8/22/2023 最后编辑:Gugu72Martin AJ 更新时间:8/22/2023 访问量:69
如何处理 Null 上的 array_shift()?
How to handle array_shift() on Null?
问:
请看一下这段代码:
$end = isset($newvar) ? array($newvar) : null;
while($ends = array_shift($end)){
...
当我使用 PHP 时,它运行良好,但是升级到 后,它会抛出:7.2
8.1
PHP 致命错误:未捕获的 TypeError:array_shift():参数 #1 ($array) 必须是数组类型,在 /path/to/qanda.php:469 中给出 null
知道我该如何解决它吗?
答:
5赞
Nick
8/22/2023
#1
只需改用空数组即可:
$end = isset($newvar) ? array($newvar) : [];
array_shift将在第一次调用时返回,并将空数组作为输入,因此循环不会执行。null
4赞
AymDev
8/22/2023
#2
最基本的解决方案是将该值替换为空数组以符合类型要求:null
$end = isset($newvar) ? array($newvar) : [];
while($ends = array_shift($end)){
您还可以创建数组并在 null 上使用 null 合并运算符:$newvar
$end = [$newvar ?? null];
while($ends = array_shift($end)){
但是我不明白为什么你会创建一个具有单个值的数组,然后使用 的返回值创建一个循环。循环体将仅运行一次。
也许只是使用一个条件?array_shift
if (isset($newvar)) {
评论
1赞
Nick
8/22/2023
你提出了一个好观点!
评论
array_reverse
array_pop
array_shift
array_pop
array_shift
array_reverse
array_pop
array_shift's
array_reverse
while
if (isset($newvar)) { ...do something... }
while