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);
}