Php 如何确定递归foreach函数中的第一个元素?
我有一个生成嵌套导航菜单的函数:Php 如何确定递归foreach函数中的第一个元素?,php,Php,我有一个生成嵌套导航菜单的函数: function recursive_foreach($array, $display) { $out = '<ul>'; foreach ($array as $key => $value) { ... $out .= '<li class="'. $is_active . $is_parent . '"><a href="' . $url . '">' . $valu
function recursive_foreach($array, $display) {
$out = '<ul>';
foreach ($array as $key => $value) {
...
$out .= '<li class="'. $is_active . $is_parent . '"><a href="' . $url . '">' . $value['name'] . '</a>'; }
if (is_array($value['has_children'])) {
$out .= recursive_foreach( ...
}
$out .= "</li>";
}
$out .= '</ul>';
return $out;
}
我只想在第一个ul元素中添加css类。我知道如何确定foreach循环中的第一个元素,但如何将其从循环中取出?通常,第一个$key为零,因此您可以检查该条件:
$first = $key === 0;
如果第一个键不同,请使用第一个键:
$first = $key === $firstKey;
如果您的第一个密钥发生更改,请首先获取它:
list($firstKey) = array_keys($array);
希望这是有帮助的
在CSS本身中,您也可以使用。因此无需添加类。您可以使用CSS选择器:first child或:first of type来针对相应的元素,因此无需向该元素添加特定的类。最好传递一个适当的参数:
function recursive_foreach($array, $display, $first = true) {
...
recursive_foreach($foo, $bar, false);
...
}
您可以使用CSS选择器:
因此,您的CSS应该是这样的:
ul li:first-child { /* CSS Code */ }
它与以下各项兼容:
IE 7+
火狐
铬
游猎
因为您可以使用纯CSS将其作为目标,而无需更改标记!: 很好,但并不完全兼容。这是什么递归?我不知道这是如何递归的。我没有在这里展示整个函数。在我有3个点的地方,我调用:ifis_数组$value['has_children']{$out.=recursive_foreach。。。。