OK。无法获得任何类似的引用。我有两个数组,一个设置我的菜单导航项:
$nav_items = array('item1_link'=>'item1_displayname',
'item2_link'=>'item2_displayname',
'item3_link'=>'item3_displayname',
. . .
然后,我有了我的第二个数组,它设置了许多可能的颜色:
$colors = array('red'=>'#f00',
'green'=>'#090',
'yellow'=>'fc0',
. . .
这个想法是将这两者合并,这样的结果将是:
<a class="red" href="item1_link">item1_displayname</a>
<a class="green" href="item2_link">item2_displayname</a>
<a class="yellow" href="item3_link">item3_displayname</a>
问题是:想象一下,我有10个菜单项,我决定7种不同的颜色。这个想法是(这就是我陷入困境的地方(一个主循环将遍历10个菜单项,从第二个循环中为每个颜色项分配,该循环应该循环一次,然后循环第二次(如果必要,还可以循环第三次,等等(,直到第1组的所有项都用完为止。也许我想要的一个例子会更有帮助:
<a class="red" href="item1_link">item1_displayname</a>
<a class="green" href="item2_link">item2_displayname</a>
<a class="yellow" href="item3_link">item3_displayname</a>
<a class="blue" href="item4_link">item4_displayname</a>
<a class="orange" href="item5_link">item5_displayname</a>
<a class="purple" href="item6_link">item6_displayname</a>
<a class="gray" href="item7_link">item7_displayname</a>
<a class="red" href="item8_link">item8_displayname</a> <!--Notice how colors restart here-->
<a class="green" href="item9_link">item9_displayname</a>
<a class="yellow" href="item10_link">item10_displayname</a>
因此,就PHP代码而言,我现在得到的是以下内容:
<?php
reset($nav_items);
reset($colors);
while ((list($nav_link, $nav_name) = each($nav_items))) {
list($color_name) = each($colors);
?>
<li><a class="<?php echo $color_name ?>" href="<?php echo $nav_link ?>"><?php echo $nav_name ?></a></li>
<?php
}
?>
这还不错,但只遍历一次颜色数组,然后为其余菜单导航项重复最后一种颜色。那么,一旦迭代完成(而nav_item迭代没有完成(,我如何让颜色数组重新启动??对此事的任何帮助都将不胜感激!
附言:我也试过把它作为一个迭代器,但没能完全发挥作用。也许这毕竟是最好的响应,但我仍然无法让colors数组循环回来以完成nav_items数组循环。
if (current($colors) === false) reset($colors);
您可能需要考虑使用模运算符:
$number_of_colors = count($colors);
$loop_count = 0;
foreach($nav_items as $nav_link => $nav_name) {
$use_color = $colors[$loop_count % $number_of_colors];
echo "<li><a class='{$use_color}' href='{$nav_link}'>{$nav_name}</a></li>'n";
$loop_count++;
}
编辑:哎哟,对不起,没有意识到你有你想用作CSS类的颜色名称作为数组中的键。。。如果你必须以这种方式组织它,你可以这样做:
$color_classes = array_keys($colors);
然后在我上面提供的片段中使用$color_classes而不是$colors。