多维数组-PHP-CodeIgniter
我使用CodeIgniter和Jamie Rumbollow的My_模型连接3个表,从数据库中获得以下结果:多维数组-PHP-CodeIgniter,php,arrays,codeigniter,Php,Arrays,Codeigniter,我使用CodeIgniter和Jamie Rumbollow的My_模型连接3个表,从数据库中获得以下结果: Career_Option Course Specialization ------------- ------- -------------- Management MBA Finance Management
Career_Option Course Specialization
------------- ------- --------------
Management MBA Finance
Management BBA Marketing
Engineering BSc Computer Science
Engineering MSc Bio-Technology
这是从模型类传递到控制器时我的resultset的外观:
Array
(
[0] => stdClass Object
(
[career_option] => Management
[course] => MBA
[specialization] => Finance
)
[1] => stdClass Object
(
[career_option] => Management
[course] => BBA
[specialization] => Marketing
)
[2] => stdClass Object
(
[career_option] => Engineering
[course] => Bsc
[specialization] => Computer Science
)
[3] => stdClass Object
(
[career_option] => Engineering
[course] => MSc
[specialization] => Bio-Technology
)
)
现在,在我的网页上,我想以以下方式显示此结果集:
Management
|
|_ MBA
| |
| |_ Finance
|
|_ BBA
|
|_ Marketing
Engineering
|
|_ BSc
| |
| |_ Computer Science
|
|_ MSc
|
|_ Bio-Technology
你能建议我如何创建多维数组吗??在控制器中保存这些我最终会传递给我的视图的记录
谢谢 这对你有用吗
function tree_from_rows($rows)
{
$tree = array();
foreach($rows as $row) {
$ref =& $tree;
foreach($row as $value) {
if (!array_key_exists($value, $ref)) {
$ref[$value] = array();
}
$ref =& $ref[$value];
}
}
return $tree;
}
请注意,最内部的分支也是数组,因此在迭代数组时只需使用索引。例如,如果数组位于名为$results的变量中,则可以执行以下操作
$aData['careerOptions'] = array();
foreach($results as $result) {
if(!in_array($result->career_option, $aData['careerOptions'])) {
$aData['careerOptions'][] = $result->career_option;
}
if(!in_array($result->course, $aData['careerOptions'][$result->career_option])) {
$aData['careerOptions'][$result->career_option][] = $result->course;
}
if(!in_array($result->specialization, $aData['careerOptions'][$result->career_option][$result->course])) {
$aData['careerOptions'][$result->career_option][$result->course][] = $result->specialization;
}
}
然后,您可以通过执行以下操作将$aData传递给您的视图
$this->load->view('path/to/view', $aData);
一旦进入视图,您就可以访问包含阵列的$careerOptions