Просто нашел странную ситуацию, когда нам нужно бежать switch
заявления только на одинаковое совпадение (с точным типом). Просто подумайте об этом сценарии:
$value = "";
switch ($value) {
case 0:
echo "Zero";
break;
case 1:
echo "One";
break;
case "":
echo "Empty";
break;
default:
echo "None";
break;
}
Это будет echo
«Нуль» где я хочу это echo
«Пустой». Можно ли это как-то сделать с switch
заявление или у меня есть единственный способ использовать if...elseif...else
с ===
оператор?
Попробуй вот так
$value = "";
switch (true) {
case ($value === 0):
echo "Zero";
break;
case ($value === 1):
echo "One";
break;
case ($value === ""):
echo "Empty";
break;
}
Оператор переключения PHP задокументировано использовать свободное сравнение. Если вам нужны точные совпадения, то, к сожалению, лучше всего использовать отдельные тесты if / else с ===
,
Одной из альтернатив является нечто похожее на
switch(true) {
case $value === 0:
//...
break;
}
но это примерно то же самое, что и серия операторов if-else, с большим количеством операций ввода и отступа.
Это можно сделать, вам просто нужно перевернуть то, что вы сравниваете:
switch(true) {
case $value === 0:
echo "Zero";
break;
case $value === 1:
echo "One";
break;
case $value === "":
echo "Empty";
break;
default:
echo "None";
break;
}