Heim  >  Fragen und Antworten  >  Hauptteil

Wie gehe ich mit array_shift() auf Null um?

Bitte schauen Sie sich diesen Code an:

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

Wenn ich PHP 7.2 时运行良好,但升级到 8.1 verwende, wird Folgendes angezeigt:

Schwerwiegender PHP-Fehler: Uncaught TypeError: array_shift(): Parameter #1 ($array) muss vom Typ Array sein, angegeben als Null in /path/to/qanda.php:469

Irgendeine Idee, wie man das Problem beheben kann?

P粉300541798P粉300541798260 Tage vor435

Antworte allen(2)Ich werde antworten

  • P粉237029457

    P粉2370294572024-02-26 19:37:09

    最基本的解决方案是将 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)) {
    

    Antwort
    0
  • P粉696146205

    P粉6961462052024-02-26 18:54:55

    只需使用空数组即可:

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

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

    Antwort
    0
  • StornierenAntwort