За последние 24 часа нас посетили 22095 программистов и 1125 роботов. Сейчас ищут 785 программистов ...

Помогите разобратся с SPL Stack и FixedArray

Тема в разделе "PHP для профи", создана пользователем Ondottr, 30 окт 2018.

Метки:
  1. Ondottr

    Ondottr Новичок

    С нами с:
    24 ноя 2017
    Сообщения:
    46
    Симпатии:
    5
    PHP:
    1. private function getRoute()
    2.     {
    3.         $this->route = new SplStack();
    4.         $this->route->push($this->endPosition);
    5.         echo $this->route->current(); // Вывод 32041
    6.         echo $this->closeSet->offsetGet(32041); // Выводит значение по указанному индексу
    7.            
    8.     }
    А следующий код вызовет ошибку в 7-й строке index invalid or out of range:
    PHP:
    1. public function getRoute()
    2.     {
    3.         $this->route = new SplStack();
    4.         $this->route->push($this->endPosition);
    5.         $this->route->rewind();
    6.         while(!$this->route->offsetExists($this->startPosition)) {
    7.             $this->route->push($this->closedSet->offsetGet($this->route->current()));
    8.             $this->route->next();
    9.         }
    10.     }
    Что я делаю не так?
     
  2. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360
    @Ondottr, для начала определитесь, какое из выражений вызывает выход за пределы массива (и какого из массивов).
    Либо $this->route->current() /что вряд-ли/, либо $this->closedSet->offsetGet();
     
  3. johovich

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

    С нами с:
    24 авг 2016
    Сообщения:
    146
    Симпатии:
    17
    Вырвано из контекста. Или выкладывай весь класс, или совсем не выкладывай.
    Тебе правильно сказали, что ошибка значит выход за пределы массива. Где-то ты идёшь дальше, чем твой splfixed array позволяет.