Switch Case 有类似 Ternary 的表达式吗?
Is There any Expression Like Ternary for Switch Case?
我正在尝试使用PHP来识别变量$category,并将其中文名称回显到输入文本区域的值中。
<input type="text" value="<?php ...code...?>"/>
如果我使用三元运算符,它看起来和 If-Else 语句一样疯狂... $category 变量重复多次。
echo (($category == "vegetable") ? "蔬菜" :
(($category == "fruit") ? "水果" :
(($category == "meat") ? "肉類" :
(($category == "seafood") ? "海鮮" :
(($category == "junkFood") ? "零食" : "")))));
但是,如果我使用 Switch 语句,它会使我的代码变得很长...
switch ($category){
case "vegetable":
echo "蔬菜";
break;
case "fruit":
echo "水果";
break;
case "meat":
echo "肉類";
break;
case "seafood":
echo "海鮮";
break;
case "junkFood":
echo "零食";
}
switch 语句是否还有其他三元运算符可以使我的代码更简洁?
或者有没有更好的方法来修改我的代码?
您可以使用像 array('junkFood' => "零食", ...)
这样的数组来使它看起来更干净
例如
$array = ['junkFood' => "零食", 'junkFood2' => "零食"];
echo $array['junkFood'];
您可以创建一个函数,使用返回值的开关:
<input type="text" value="<?php echo translate($category);?>"/>
<?php
function translate($category) {
switch ($category){
case "vegetable": return "蔬菜";
case "fruit": return "水果";
// ...
}
}
您可以使用简单的关联数组:
$your_food = ["vegetable"=>"蔬菜", "fruit"=>"水果","meat"=>"肉類"...];
echo $your_food[$category];
如果你只有key
=> value
"relation",那么用普通数组代替:
$default = '???';
$map = [
"vegetable" => "蔬菜",
"fruit" => "水果",
...
];
echo array_key_exists($category, $map) ? $map[$category] : $default;
我正在尝试使用PHP来识别变量$category,并将其中文名称回显到输入文本区域的值中。
<input type="text" value="<?php ...code...?>"/>
如果我使用三元运算符,它看起来和 If-Else 语句一样疯狂... $category 变量重复多次。
echo (($category == "vegetable") ? "蔬菜" :
(($category == "fruit") ? "水果" :
(($category == "meat") ? "肉類" :
(($category == "seafood") ? "海鮮" :
(($category == "junkFood") ? "零食" : "")))));
但是,如果我使用 Switch 语句,它会使我的代码变得很长...
switch ($category){
case "vegetable":
echo "蔬菜";
break;
case "fruit":
echo "水果";
break;
case "meat":
echo "肉類";
break;
case "seafood":
echo "海鮮";
break;
case "junkFood":
echo "零食";
}
switch 语句是否还有其他三元运算符可以使我的代码更简洁?
或者有没有更好的方法来修改我的代码?
您可以使用像 array('junkFood' => "零食", ...)
这样的数组来使它看起来更干净
例如
$array = ['junkFood' => "零食", 'junkFood2' => "零食"];
echo $array['junkFood'];
您可以创建一个函数,使用返回值的开关:
<input type="text" value="<?php echo translate($category);?>"/>
<?php
function translate($category) {
switch ($category){
case "vegetable": return "蔬菜";
case "fruit": return "水果";
// ...
}
}
您可以使用简单的关联数组:
$your_food = ["vegetable"=>"蔬菜", "fruit"=>"水果","meat"=>"肉類"...];
echo $your_food[$category];
如果你只有key
=> value
"relation",那么用普通数组代替:
$default = '???';
$map = [
"vegetable" => "蔬菜",
"fruit" => "水果",
...
];
echo array_key_exists($category, $map) ? $map[$category] : $default;