1

私はウェブサイト言語のメニューを作成していますが、それは機能しますが、将来さらに言語を追加する場合に備えて、私が行っている方法は最善の方法ではないと思います. たぶん、誰かがより良い例を示すことができます。これが私が持っているものの一部です。

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.. 
}

おそらく、foreach関数よりもいくつかの配列を実行する方が良いでしょうが、そのx、xの方法が混乱しすぎて方法がわかりません

4

2 に答える 2

0

このようなものは @ 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>";
于 2016-07-01T16:34:53.363 に答える
0

配列が必要な場合は、関数を作成することができます。この関数は言語をパラメーターとして取得し、それに応じてオプションを表示します。

<?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".

?>

将来的には、配列にさらに言語を追加する可能性があります。

テストするには、以前のコードをコピーしてファイルに貼り付け、PHP として保存し、ブラウザーで開きます。

于 2016-07-01T16:42:55.937 に答える