Я обновил веб-сайт и нашел раздражающую проблему на моих страницах, я ее разрешил, но я не уверен, что это должно выглядеть так. Для меня я не эксперт по PHP, его странное поведение может объяснить мне, что происходит.
У меня был этот код:
if($Menu == "index"){
{if ($Language == "UK"){echo "<td><h1>Welcome</h1>";}
{if ($Language == "NL"){echo "<td><h1>Welkom </h1>";}
}
else
// if $menu was not index it displayed a hyperlink to Welcome page
Строковая вещь здесь, когда проверка языка работала нормально. Сравнение для $ Menu не работало, даже если оно содержало индекс слова. Поскольку вся страница была сгенерирована "на лету" и некоторые строковые операции, которые были выполнены до того, как я предположил, что, возможно, несмотря на то, что я также тестировал ее с помощью
echo "dump Menu variable " . $Menu
Это привело к тому, что jut отобразил индекс слова на странице. Так что, возможно, что-то не так в строковых типах или что-то в этом роде
Поэтому я экспериментировал с
if($Menu === "index")
Не повезло
Ну, я наконец решил это так
if (strpos($Menu,'index' !==false)
Это действительно так, как это должно быть сделано? Я не чувствую себя очень комфортно с этим. Что касается меня, то это странно, что для $ Language это работает как надо (на мой взгляд). Существует ли какая-то проблема с типом, или, может быть, нежелательные окончания \n, я мог бы, возможно, нормализовать строку, чтобы сделать содержание читаемых сравнений строк, или другого типа равного оператора. Поскольку мне кажется, что с помощью меню "Меню" легче справляться. Может быть, переформатировать, но я не уверен здесь.
Похоже, что ваш индекс-String содержит пробелы, вместо strpos вы можете использовать trim( $Menu )
чтобы избавиться от них.
Но лучше всего было бы предотвратить их появление. Вы можете попробовать echo "dump Menu variable |". $Menu."|";
echo "dump Menu variable |". $Menu."|";
или просто var_dump( $Menu )
чтобы идентифицировать дополнительные символы.
Возможно, вы можете опубликовать свой сегмент кода, где заполняется $ Menu.
(извините, не могу просто прокомментировать)
Вы можете попробовать что-то вроде этого
$Menu = trim($Menu);
$Language = trim($Language);
$langAllowed = ["UK", "NL"]; // zero element is default;
if(!in_array($Language, $langAllowed )) $Language = $langAllowed[0];
$menuLocales=[
"index" => [
"UK"=>"Welcome",
"NL"=>"Welkom "
],
"default"=>[
"UK"=>"Welcome default (no index)",
"NL"=>"Welkom default (no index)"
]
];
$MenuIndex = isset($menuLocales[ $Menu ]) ? $Menu : "default";
echo "<td><h1>".$menuLocales[ $MenuIndex ][ $Language ]."</h1>";