-1
我有一個分層數據,我把它放在一個數組中,我叫$ dt。比起我有一個數組來存儲我調用$ in的這些數據之間的關係。我創建了一個函數,它具有參數,初始索引,級別,數組$ in和數組$ in。我正在調試該函數,但我不知道爲什麼該子類在此過程中丟失。完整的代碼是:遞歸PHP函數返回意外的數組
$dt = array(
41=>array("pk"=>41,"parentPk"=>30,"name"=>"car1"),
15=>array("pk"=>15,"parentPk"=>11,"name"=>"food"),
70=>array("pk"=>70,"parentPk"=>30,"name"=>"car3"),
18=>array("pk"=>18,"parentPk"=>15,"name"=>"food1"),
49=>array("pk"=>49,"parentPk"=>30,"name"=>"car2"),
20=>array("pk"=>20,"parentPk"=>15,"name"=>"food2"),
30=>array("pk"=>30,"parentPk"=>11,"name"=>"car")
);
echo "<pre>";
print_r($dt);
echo "</pre>";
$in=array(11=>array(15,30),15=>array(18,20),30=>array(41,49,70));
echo "<pre>";
print_r($in);
echo "</pre>";
function fn_tree($parent_id, $level,$dt,$in) {
if(is_null($parent_id)){
$parent_id ="NULL";
}
if (isset($in[$parent_id])) {
foreach ($in[$parent_id] as $id) {
$pk=$in[$parent_id];
$arrEnd[$id]=str_repeat("-", $level*2) .$dt[$id]["name"];
fn_tree($id, $level + 1,$dt,$in,$arrEnd);
}
}
return $arrEnd;
}
$arrEcho = fn_tree(11, 0, $dt, $in);
echo "<br>";
echo "result";
echo "<br>";
echo "<pre>";
print_r($arrEcho);
echo "</pre>";
$desired = array(
15=>"food",
18=>"food1",
20=>"food2",
30=>"car",
41=>"car1",
49=>"car2",
70=>"car3"
);
echo "<br>";
echo "desired";
echo "<br>";
echo "<pre>";
print_r($desired);
echo "</pre>";
那麼,爲什麼這個函數正在丟失子類呢?
輸出是:
Array data
(
[41] => Array
(
[pk] => 41
[parentPk] => 30
[name] => car1
)
[15] => Array
(
[pk] => 15
[parentPk] => 11
[name] => food
)
[70] => Array
(
[pk] => 70
[parentPk] => 30
[name] => car3
)
[18] => Array
(
[pk] => 18
[parentPk] => 15
[name] => food1
)
[49] => Array
(
[pk] => 49
[parentPk] => 30
[name] => car2
)
[20] => Array
(
[pk] => 20
[parentPk] => 15
[name] => food2
)
[30] => Array
(
[pk] => 30
[parentPk] => 11
[name] => car
)
)
Array relationship
(
[11] => Array
(
[0] => 15
[1] => 30
)
[15] => Array
(
[0] => 18
[1] => 20
)
[30] => Array
(
[0] => 41
[1] => 49
[2] => 70
)
)
result
Array
(
[15] => food
[30] => car
)
desired
Array
(
[15] => food
[18] => food1
[20] => food2
[30] => car
[41] => car1
[49] => car2
[70] => car3
)
嗨bfd,我試過聲明之前的功能,但這不起作用。是的,它應該爲每個子目錄提供2行。 – zwitterion 2014-10-02 00:08:09
事實上,如果我在函數內聲明'global $ dt,$ in,$ arrEnd;',它會起作用,我不知道爲什麼。 – zwitterion 2014-10-02 00:18:49