Switch Case是否有任何类似三元的表达式?

时间:2017-06-30 05:49:24

标签: php switch-statement ternary-operator

我正在尝试使用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 "零食";
}

是否还有其他三元运算符用于切换语句以使我的代码更清晰?

或者有更好的方法来修改我的代码吗?

4 个答案:

答案 0 :(得分:1)

您可以使用array('junkFood' => "零食", ...)等数组使其看起来更干净

例如

$array = ['junkFood' => "零食", 'junkFood2' => "零食"];
echo $array['junkFood'];

答案 1 :(得分:1)

您可以使用简单的关联数组:

$your_food = ["vegetable"=>"蔬菜", "fruit"=>"水果","meat"=>"肉類"...];

echo $your_food[$category];

答案 2 :(得分:0)

如果您只有key =&gt; value“关系”,然后使用普通数组:

$default = '???';
$map = [
    "vegetable" => "蔬菜",
    "fruit" => "水果",
    ...
];

echo array_key_exists($category, $map) ? $map[$category] : $default;

答案 3 :(得分:-1)

你可以使用一个可以重新调整值的开关来创建一个函数:

<input type="text" value="<?php echo translate($category);?>"/> 

<?php
function translate($category) {
   switch ($category){
   case "vegetable": return "蔬菜";
   case "fruit": return "水果";
   // ...
   }
}