我有一个表示菜单的数组,并且出于所有意图和目的,可以假设它是无限嵌套的。
结构看起来像这样
array(
0 => array(
'label' => 'Item1',
'link' => 'http://google.com',
'children' => null
)
1 => array(
'label' => 'Item2',
'link' => 'http://google.com',
'children' => array( 3 => array(
'label' => 'SubmenuItem1',
'link' => 'http://www.yahoo.com',
'children' => null
)
)
)
2 => array(
'label' => 'Item3',
'link' => 'http://google.com',
'children' => null
)
)
我想要做的是对结构中的所有link
执行比较操作。一旦比较返回true,我们应该对该元素执行一些操作,然后停止该过程。
然而,问题在于比较需要从结构中最长的link
开始,然后向最短的link
移动。如果有多个链接具有相同的长度,则将使用第一个访问过的链接。
我最初的想法是做以下事情:
遍历整个数组并收集所有链接并将其保存到关联数组中,使用键作为键,链接作为内容:
array(
0 => 'http://google.com',
1 => 'http://google.com',
2 => 'http://google.com',
3 => 'http://yahoo.com',
)
然后按照内容的长度对数组进行排序。
进行比较操作并记下元素的键。
返回原始数组并搜索注释的键,然后对该元素执行某些操作。
这是实现这一目标的最佳方法吗?有更有效的方法吗?
我在PHP中对此进行编码,但这个问题旨在与平台无关。
答案 0 :(得分:0)
您的解决方案听起来不错。但是,我会在步骤1中收集链接时保存链接的特定索引,这样您就不必在步骤4中再次执行整个搜索,而是直接访问该条目。