SiMM
Новичок
foreach, рекурсия и глобальный массив
Столкнулся со следующим необъяснимым для меня поведением PHP (4.3.9). Имею следующий кусок кода:
Функция rec описана следующим образом
Результат выполнения:
Кто нибудь может объяснить причины? Для себя пока обошёлся "костылём"
который и выдаёт требуемые
Столкнулся со следующим необъяснимым для меня поведением PHP (4.3.9). Имею следующий кусок кода:
PHP:
$arr = array(array('id'=>1,'parent_id' => 0),
array('id'=>2,'parent_id' => 1),
array('id'=>3,'parent_id' => 0),
array('id'=>4,'parent_id' => 2),
array('id'=>5,'parent_id' => 1),
);
rec();
PHP:
function rec($id=0,$level=''){
global $arr;
foreach ($arr as $d)
if ($d['parent_id'] == $id){
echo $level.$d['id']."\n";
rec($d['id'],'-'.$level);
}
}
Код:
1
-2
--4
PHP:
function rec($id=0,$level=''){
global $arr;
for ($i = 0; $i<count($arr);$i++){
$d = $arr[$i];
if ($d['parent_id'] == $id){
echo $level.$d['id']."\n";
rec($d['id'],'-'.$level);
}
}
}
Код:
1
-2
--4
-5
3