За последние 24 часа нас посетили 44977 программистов и 6346 роботов. Сейчас ищут 1863 программиста ...

Нужна помощь по методу StartResultCache

Тема в разделе "PHP для новичков", создана пользователем sh00r00p, 12 фев 2023.

  1. sh00r00p

    sh00r00p Активный пользователь

    С нами с:
    22 апр 2014
    Сообщения:
    6
    Симпатии:
    0
    Добрый вечер!
    Сайт на Bitrix
    Делаю переход на PHP 8
    в одном из шаблонов разработчики использовали вот такой код


    Код (Text):
    1. if ($this->StartResultCache(0))
    2. {
    3.     $max=8;
    4.    
    5.     /*if($USER->IsAdmin())
    6.     {
    7.         show($_SESSION['history']);
    8.     }*/
    9.     //show($_SESSION['history']);
    10.    
    11.     //
    12.     //unset($_SESSION['history']);
    13.     $_SESSION['history']=array_unique($_SESSION['history']);
    14.     //show($_SESSION['history']);
    15.    
    16.     $i=0;
    17.     foreach($_SESSION['history'] as $k=>$v)
    18.     {
    19.         $i++;
    20.         if(count($_SESSION['history'])>23 && $i==1){unset($_SESSION['history'][$k]);}
    21.         $tmp=explode("_",$v);
    22.        
    23.         //show($tmp);
    24.         if($tmp[0]>0)
    25.         {
    26.             $ids[]=$tmp[0];
    27.         }
    28.         else
    29.         {
    30.             unset($_SESSION['history'][$k]);
    31.         }
    32.     }
    При переходе на PHP 8 ругается на вот этот метод if ($this->StartResultCache(0))

    Пишет
    array_unique(): Argument #1 ($array) must be of type array, null given (0)

    Прошу помощи. Как правильно будет переписать данную функцию?
     
  2. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.593
    Симпатии:
    362
    Ругается не на метод StartResultCache, а на то, что в функцию array_unique передаёте null.
    Как вариант:
    PHP:
    1. $_SESSION['history']=array_unique($_SESSION['history'] ?? []);
    Если, конечно, именно эта строка указана в ошибке.