使用foreach循环和数组php创建菜单


Create menu with foreach loop and array php

对于我的站点,我需要用数组创建菜单,并用foreach循环打印出来。

这是我已经拥有的阵列:

$aMenu = array(
 'Home' => 'index.php',
 'Over mij' => 'overmij.php',
 'Contact' => 'contact.php'
 ');

所以我需要在foreach循环中打印这个数组,这就是我需要打印的:

<li><a href="index.php" title="menuitems" class="current">Home</a></li>
 <li><a href="overmij.php" title="menuitems" >Over mij</a></li
 <li><a href="contact.php" title="menuitems" >Contact</a></li>

我还必须在我目前所在的页面上获得课程"当前"。

我还没有使用foreach循环,而且我在网上找不到它。谢谢你抽出时间。

$aMenu = array(
 'Home' => 'index.php',
 'Over mij' => 'overmij.php',
 'Contact' => 'contact.php'
 );
<?php if(isset($aMenu)):?>
<ul class="menu">
  <?php foreach($aMenu as $name => $page):?>
  <li><a href="<?php echo $page;?>" title="<?php echo $name;?>"><?php echo $name;?></a></li>
<?php endforeach;?>
</ul>
<?php endif; ?>

"当前选定"功能是通过Javascript实现的。

您可以这样打印菜单:

    <?php
    $aMenu = array(
     'Home' => 'index.php',
     'Over mij' => 'overmij.php',
     'Contact' => 'contact.php'
    );
    $list = "<ul>";
    foreach($aMenu as $key=>$menu) {
       $class = '';
       if($current_page == $key) { $class = 'active'; }
       $list = $list.'<li><a href="'.$menu.'" class="'.$class.'" title="menuitems" >'.$key.'</a></li>';
    }
    $list .= "</ul>";
    echo $list;
?>

您可以使用foreachif来实现您想要的输出。

<?php 
$aMenu = array(
    'Home' => 'index.php',
    'Over mij' => 'overmij.php',
    'Contact' => 'contact.php'
);?>
<ul>
<?php
foreach($aMenu as $key => $val){ 
$active = ($page == $key) ? 'current' : '';
?>
    <li><a href="<?php echo $key?>" title="menuitems" class="<?php echo $active;?>"><?php echo $val;?></a></li>
}
?>
</ul>

index.php页面中,您需要使用$page = 'index.php'等…

注意:您需要像页面名称一样在每个页面中设置$page。有很多方法可以做到这一点。这只是一个。

我可能会迟到,但请尝试下面的代码您可以将$current_page更改为该值,并将其设置为current:

<?php    
     $aMenu = array(
          'Home' => 'index.php',
          'Over mij' => 'overmij.php',
          'Contact' => 'contact.php'
     );
     $current_page = 'overmij.php';
?>
<li>
    <?php foreach ($aMenu as $key => $value) : ?>
    <a href="<?php echo $value; ?>" title="menuitems" <?php if($current_page == $value){echo "class='current'";}?>><?php echo $key;?></a>
    <?php endforeach;?>
</li>

您可以使用basename($_SERVER['SCRIPT_FILENAME'])

这个片段正在查找服务器请求的脚本名称,例如(粗体)

http://example.com/index.php

并使用您定义的数组值进行验证

if (basename($_SERVER['SCRIPT_FILENAME') == $filename) {
   //add class
   $current = 'current';
}

最后用三元算子使变短

foreach ( $aMenu as $menu => $filename ) {
   $current = (basename($_SERVER['SCRIPT_FILENAME']) == $filename) ? 'current' : '';
   echo '<li><a href="'.$filename.'" title="menuitems" class="'.$current.'">'.$menu.'</a></li>';
}