【发布时间】:2015-07-03 05:16:14
【问题描述】:
这是我得到的http://codepad.org/iDoXXsLX
有这样的数组
Array
(
[0] => Array
(
[NumberRenamed] => 17
[TopicName] => Products
[UpperLevelNumberRenamed] => 0
)
[17] => Array
(
[0] => Array
(
[1] => Array
(
[NumberRenamed] => 18
[TopicName] => Computers
[UpperLevelNumberRenamed] => 17
)
)
)
[18] => Array
(
[0] => Array
(
[2] => Array
(
[NumberRenamed] => 16
[TopicName] => Laptops
[UpperLevelNumberRenamed] => 18
)
)
)
[16] => Array
(
[0] => Array
(
[4] => Array
(
[NumberRenamed] => 8
[TopicName] => Dell
[UpperLevelNumberRenamed] => 16
)
)
)
)
顶级项目是Products,第一个子级项目是Computers,下一个子级是Laptops,然后是下一个子级Dell
对于每个子级项UpperLevelNumberRenamed == 到最接近的上级NumberRenamed。
想要得到这样的结果
Products
Computers
Laptops
Dell
Acer
Desktops
Home
试过了
foreach( $main_topics as $k_main_topics => $v_main_topics ){
if( isset($v_main_topics['UpperLevelNumberRenamed']) and $v_main_topics['UpperLevelNumberRenamed'] == 0 ){
//print only top level topics
echo $v_main_topics['TopicName']. '<br/>';
}
else{//if not top level topic
foreach( $v_main_topics[0] as $k_v_main_topics_0 => $v_v_main_topics_0 ){
echo $v_v_main_topics_0['TopicName']. '<br/>';
}//foreach( $v_main_topics[0] as $k_v_main_topics_0 => $v_v_main_topics_0 )
}//else{
}//foreach( $main_topics as $k_main_topics => $v_main_topics )
但是得到这个
Products
Home
Computers
Laptops
Desktops
Dell
Acer
有些不对劲,但看不懂是什么。请告知代码中需要更正/更改的内容
尝试另一种方式
初始数组是一维数组。试图从一维获取 ul li 导航。
【问题讨论】:
-
这些数字真的意味着什么吗?换句话说,它们是否反映了数据库 ID 等?...此外,你为什么要嵌套一个额外的级别
[17] => Array ( [0] => Array (,[18] => Array ( [0] => Array (..... 你真的需要这个吗? -
是的,数字是主键 - 数据库 ID。额外的水平,因为遵循这个答案stackoverflow.com/questions/7673044/…。现在出现了,不需要额外的等级。