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。。。。