У меня есть следующая инструкция switch.Оператор switch с использованием strstr всегда проверяет как true?
URL-адрес содержит идентификатор реферала, например, твиттер, facebook или электронную почту, например [email protected] Это хранится в $ref
У меня есть следующий переключатель заявление:
switch ($ref) {
case "twitter":
echo "twitter";
break;
case "facebook":
echo "facbeook";
break;
case "blog":
echo "blog";
break;
case strstr($ref,'@'):
echo "email = ".$ref;
default:
echo "no referral found";
break;
}
Однако, если URL передается ни с чем (например просто www.mything.co.uk
), то я желаю, чтобы пойти в default
случае.
Вместо этого я получаю следующий результат:
email = no referral found
Почему по умолчанию также включать в себя текст, я поставил для case strstr($ref,'@')
?
Не делайте этого: 'случай strstr ($ реф, '@ '): 'Это ужасная практика. –
@BartHaalstra вы можете объяснить, почему это ужасная практика. – Francesca
Это не то, для чего создан переключатель. Коммутатор должен соответствовать переменной статическому значению. Почти все другие языки даже не допускают динамического значения в этом случае. Просто удалите этот случай и выполните оператор if в случае по умолчанию. –