0
我有這種方法將採用單維數組並將其轉換爲多維數組。這是類別的鄰接列表。我正在注入一個枚舉路徑。它工作90%的時間。PHP foreach在一些迭代中無序地注入新索引
public function fnExpandArray($aData){
$aNested = array();
foreach($aData as &$aCat){
if(isset($aData[$aCat['parent_id']])){
$aData[$aCat['parent_id']]['sub'][$aCat['id']] = &$aCat;
$aData[$aCat['parent_id']]['sub'][$aCat['id']]['path'] = $aData[$aCat['parent_id']]['path'] . '_' . $aCat['id'];
} else {
$aNested[$aCat['id']] = &$aCat;
$aNested[$aCat['id']]['path'] = $aCat['id'];
}
}
unset($aCat);
return $aNested;
}
該工程確定90%的時間,但是正在被注入了「路徑」指數有時被後注入「分」指標,導致不正確地計算出所列舉的路徑。例如:
正確:
[18] => Array
(
[id] => 18
[parent_id] => 1
[title] => Category 1
[path] => 1_18
[sub] => Array
(
[150] => Array
(
[id] => 150
[parent_id] => 18
[title] => Category 2
[path] => 1_18_150
但在一些迭代後「分」和程序將失敗,它會注入「路徑」。
失敗:
[45] => Array
(
[id] => 45
[parent_id] => 2
[sub] => Array
(
[10] => Array
(
[id] => 10
[parent_id] => 45
[sub] => Array
(
[152] => Array
(
[id] => 152
[parent_id] => 10
[title] => Category 1
[path] => _152
)
[79] => Array
(
[id] => 79
[parent_id] => 10
[title] => Category 2
[path] => _10_79
)
)
[title] => Dryers
[path] => _10
注意路徑和標題如何子注射後注射。任何想法爲什麼?
我懷疑這是因爲您使用的是引用。你確定你需要這個嗎? – Barmar