PHP: Цикл foreach "сломался" и не перебирает массив)

Рекурсией на каждом вызове функции наполнялся массив массивами, получилась такая группа массивов внутри одной переменной (результат вардампа):

array (
  12 => 
  array (
  ),
)
array (
  11 => 
  array (
    0 => '12',
  ),
  13 => 
  array (
  ),
)
array (
  3 => 
  array (
  ),
  4 => 
  array (
  ),
  5 => 
  array (
    0 => '11',
  ),
  7 => 
  array (
  ),
  8 => 
  array (
    0 => '13',
  ),
  9 => 
  array (
  ),
  10 => 
  array (
  ),
)
array (
  1 => 
  array (
  ),
  2 => 
  array (
    0 => '3',
    1 => '4',
    2 => '5',
  ),
  6 => 
  array (
    0 => '7',
    1 => '8',
    2 => '9',
    3 => '10',
  ),
)

Проблема в том, что когда я пытаюсь перебрать array(1), array(2), array(7) и тд, у меня ничего не выходит. Цикл foreach на 0-вой итерации показывает все массивы сразу, на первой итерации выводит:

array(1) {
  [12]=>
  array(0) {
  }
}

на второй - опять все массивы. Проверял так:

$i = 0;
        foreach($commonArr as $lk){
            echo '<pre>';
            var_dump($lk);
            echo '<pre>';
            $i++;
            if($i == 1) {
                exit;
            }
            }

Подскажите, как оптимизировать входящие в $commonArr массивы, чтобы можно было их обработать по одному?

Как массив заполняется?

 private function developCatalogue($objArr, $hierarchyArr, $allIds = [])
    {
        if(empty($allIds)) {
            $commonArr = [];
            foreach ($hierarchyArr as $item) {
                if($item[1] !== null) {
                    continue;
                }
                $allIds[$item[0]] = array();
            }
        }

        foreach ($allIds as $key => $id) {
            foreach ($hierarchyArr as $elem) {
                if ($elem[1] == $key) {
                    array_push($allIds[$key], $elem[0]);
                }
            }
        }
        $mergedArr = [];
        foreach($allIds as $arrArr) {
            $mergedArr = array_merge($mergedArr, $arrArr);
        }

        $mergedArr = array_flip($mergedArr);

        foreach($mergedArr as $obj => $content) {
            $mergedArr[$obj] = array();
        }

        $commonArr[] = $allIds;
        $allIds = $mergedArr;

        if(!empty($allIds)) {

            $this->developCatalogue($objArr, $hierarchyArr, $allIds);
        }

Ответы (0 шт):