Переключатель оператора необычное поведение

echo get_option('bp-username-field'); и эхо get_option('bp-email-field'); соответственно выходы checked а также 0, но с этим кодом оба случая работают. т.е. как привет от имени пользователя, так и привет от электронной почты.

switch("checked")
{
case  get_option('bp-username-field'):
echo 'hello from username';

case  get_option('bp-email-field'):

echo 'hello from email';
...

}

И если я изменюсь switch("0") это только отголосок привет от электронной почты. Кроме того, с swith(0) оба дела работают. Что это за поведение?

-1

Решение

Вы должны добавить break после дела. Если не все дела будут выполнены. Это нормальное поведение для switch Заявления

switch("checked")
{
case  get_option('bp-username-field'):
echo 'hello from username';
break;
case  get_option('bp-email-field'):

echo 'hello from email';
...

}
2

Другие решения

Вы, вероятно, пропали без вести break

switch("checked")
{
case  get_option('bp-username-field'):
echo 'hello from username';
break;

case  get_option('bp-email-field'):

echo 'hello from email';
break;
...

}

Когда первый случай будет выполнен, вам нужно сломать переключатель. Вы должны представить break прервать выполнение остальных дел, следующих за выбранным делом.

когда switch(0) был вызван, это последний случай (на данный момент), поэтому он не выполняет тот, что перед вторым случаем.

1

переключатель / случай делает слабое сравнение. Это значит, что "checked" == 0 является true, Что вы хотите сделать, это:

switch(true)
{
case  get_option('bp-username-field') === "checked":
echo 'hello from username';

case  get_option('bp-email-field') === "checked":

echo 'hello from email';
...
}

Но в операторе switch условие оценивается только один раз, а результат сравнивается с каждым оператором case. Это значит, что после первого case это оценить как true, все остальные case будет выполняться до конца переключателя. Что вы действительно хотите это:

if (get_option('bp-username-field') === "checked") {
echo 'hello from username';
}

if (get_option('bp-email-field') === "checked") {
echo 'hello from email';
}
1

Потому что ваше утверждение неверно;
Вы должны сравнить переменную, которая когда-либо находится внутри switch (переменная), со всеми этими случаями. например.

$favcolor = "red";

switch ($favcolor) {
case "red":
echo "Your favorite color is red!";
break;
case "blue":
echo "Your favorite color is blue!";
break;
case "green":
echo "Your favorite color is green!";
break;
default:
echo "Your favorite color is neither red, blue, nor green!";
}
-1
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector