简体   繁体   English

更容易的菜单生成取决于会话

[英]Easier menu generation depended on session

I am making a menu for website language and it works but i think the way i am doing it is not the best way in case i add more languages in future. 我正在制作一个网站语言的菜单,它可以工作,但我认为我这样做的方式不是最好的方式,以防我将来添加更多的语言。 Maybe someone can show a better example. 也许某人可以展示更好的榜样。 Here is a piece of what i've got. 这是我所拥有的一块。

if(isSet($_SESSION['lang'])) {
    $lang = $_SESSION['lang'];
    if ($lang == "en") {
        echo '<li class="">EN 
              <ul>
              <li class="submenu">RU</li>
              <li class="submenu">ES</li>
              <li class="submenu">GR</li>
              <li class="submenu">DE</li>
              </ul>
              </li>';
    }
    if ($lang == "de") {
        echo '<li class="">DE 
              <ul>
              <li class="submenu">RU</li>
              <li class="submenu">ES</li>
              <li class="submenu">GR</li>
              <li class="submenu">EN</li>
              </ul>
              </li>';
    }
    // and so on for every language.. 
}

Probably would be better doing some array and than foreach function, but i have no idea how to do that x,x way too confusing 可能会更好地做一些数组而不是foreach函数,但我不知道如何做x,x方式太混乱

I think something like this should be @ help, i defined an array for languages and anytime you need to add a language, you just added there. 我认为这样的事情应该是@ help,我为语言定义了一个数组,只要你需要添加一种语言,你就可以在那里添加。

$lang = $_SESSION['lang'];
$languages = array ("de" => "DE", "ru" => "RU", "en" => "EN");

foreach ($languages as $key=>$val) 
    if ($lang == $key) 
    {
        unset($languages[$key]);
        $main_lang = $val;
        }

echo "
<li class=\"\">$main_lang //main button
   <ul> // sub menu";
foreach ($languages as $language)
    echo "<li class=\"submenu\">$language</li>";
echo "
   </ul>
</li>";

If you want an array, it's possible to create a function, this function will get the language as parameter and display the options according to it : 如果你想要一个数组,可以创建一个函数,这个函数将获得语言作为参数并根据它显示选项:

<?php

function display ( $lang )
{ $arr = array( "en" => array( "RU","ES","GR","DE" ),
                "de" => array( "RU","ES","GR","DE" )
              );
  echo '<li class="">' .
       '<ul>';
  foreach ( $arr[ $lang ] as $item ) // DISPLAY THE OPTIONS.
    echo '<li class="submenu">' . $item . '</li>';
  echo '</ul>
        </li>';
}

display( "en" ); // DISPLAY OPTIONS FOR "EN".
display( "de" ); // DISPLAY OPTIONS FOR "DE".

?>

In the future, you may add more languages to the array. 将来,您可以向阵列添加更多语言。

To test it, copy-paste previous code in a file, save it as PHP and open it in your browser. 要对其进行测试,请将以前的代码复制粘贴到文件中,将其另存为PHP并在浏览器中打开。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM