0
我有一個腳本通過一個CSV文件,並將每行作爲一個數組放入另一個數組(嵌套數組?)。每行有2-3個字段用於該行中該項目的類別。我試圖通過如何創建這些類別中的多維數組。這是我目前有來源:來自嵌套數組的多維數組
$csv = new File_CSV_DataSource;
if ($csv->load($file)) {
$items = $csv->getHeaders();
$csv->getColumn($items[2]);
if ($csv->isSymmetric()) {
$items = $csv->connect();
} else {
$items = $csv->getAsymmetricRows();
}
$items = $csv->getrawArray();
}
$mainCats = array();
$subCats = array();
$subSubs = array();
foreach($items as $item){
if(!in_array($item[10], $mainCats)){
$mainCats[] = $item[10];
}
}
foreach($items as $item){
if(!array_key_exists($item[11], $subCats)){
$parent = array_search($item[10], $mainCats);
$subCats[$item[11]] = $parent;
}
}
foreach($items as $item){
if(!array_key_exists($item[12], $subSubs)){
$parent = array_search($item[11], array_keys($subCats));
$subSubs[$item[12]] = $parent;
}
}
這裏做的事情到目前爲止創建3個陣列,格式:
$mainCats = Array(
[0] => Main Cat 1,
[1] => Main Cat 2,
[2] => Main Cat 3
);
$subCats = Array(
[Sub Cat 1] => 0,
[Sub Cat 2] => 1,
[Sub Cat 3] => 2
);
$subSubs = Array(
[Sub Sub 1] => 0,
[Sub Sub 2] => 1,
[Sub Sub 3] => 2
);
每最後2個陣列的數值是指數他們的父類別在前面的數組中。我想要做的就是將它們全部合併成一個大的數組中的格式:
$cats = Array(
[0] => Array(
'name' => Main Cat 1,
'subs' => Array(
[0] => Array(
'name' => Sub Cat 1,
'subs' => Array(
'name' => Sub Sub 1
)
)
)
),
[1] => Array(
'name' => Main Cat 2,
'subs' => Array(
[0] => Array(
'name' => Sub Cat 2,
'subs' => Array(
'name' => Sub Sub 2
)
)
)
),
[2] => Array(
'name' => Main Cat 3,
'subs' => Array(
[0] => Array(
'name' => Sub Cat 3,
'subs' => Array(
'name' => Sub Sub 3
)
)
)
),
);
我知道必須有這樣做的更有效的方式,但我無法弄清楚。
編輯 - 我還應該提到並非所有的行都有第3類字段值。
是你確定你需要SubSub?它可能會導致SubSubSub ...將它們設置爲孩子。將在短時間內回答 –
只有3層的可能性。在某些情況下,子子類是絕對必需的。在一些行中它不是。 – chaoskreator