Неверно создается массив обьектов

Рейтинг: 0Ответов: 1Опубликовано: 20.02.2023

До недавних пор писал в процедурном стиле, сейчас понял что уже дорос до изучения ООП и попытался в свой проект добавить функционал уже написанный в стиле ООП. Рисковать не стал и решил сперва протестировать как это вообще работает. Мне нужно создать массив обьектов. Написал следующий код:

<?php
    class Obj {
        public $index;
        public $header;
        public $timelabel;
        function __construct($index, $header, $timelabel) {
            $this->index = $index;
            $this->header = $header;
            $this->timelabel = $timelabel;
        }
    }
    $obj = [];
    for($i = 0; $i < 3; $i++) {
        $obj[$i] = new Obj($i, 'Заголовок' . $i, 1000 + $i);
        echo var_dump($obj);
    }

Я ожидал получить три объекта, доступ к которым я бы мог получить через цикл for. Вот что я получаю на выходе:

/var/www/haruproject.space/start.php:15:
array(1) {
  [0] =>
  class Obj#1 (3) {
    public $index =>
    int(0)
    public $header =>
    string(19) "Заголовок0"
    public $timelabel =>
    int(1000)
  }
}
/var/www/haruproject.space/start.php:15:
array(2) {
  [0] =>
  class Obj#1 (3) {
    public $index =>
    int(0)
    public $header =>
    string(19) "Заголовок0"
    public $timelabel =>
    int(1000)
  }
  [1] =>
  class Obj#2 (3) {
    public $index =>
    int(1)
    public $header =>
    string(19) "Заголовок1"
    public $timelabel =>
    int(1001)
  }
}
/var/www/haruproject.space/start.php:15:
array(3) {
  [0] =>
  class Obj#1 (3) {
    public $index =>
    int(0)
    public $header =>
    string(19) "Заголовок0"
    public $timelabel =>
    int(1000)
  }
  [1] =>
  class Obj#2 (3) {
    public $index =>
    int(1)
    public $header =>
    string(19) "Заголовок1"
    public $timelabel =>
    int(1001)
  }
  [2] =>
  class Obj#3 (3) {
    public $index =>
    int(2)
    public $header =>
    string(19) "Заголовок2"
    public $timelabel =>
    int(1002)
  }
}

Почему обьект создается больше одного раза за цикл?

Ответы

▲ 1Принят

Он не создается больше одного раза за цикл Вы в цикле выводите содержимое массива, на первой итерации у Вас объект 1, на последней 3. Вынесите echo var_dump($obj); из цикла