php 开关格是否有类似三进制的表达式?

r7xajy2e  于 2023-05-27  发布在  PHP
关注(0)|答案(5)|浏览(132)

我尝试使用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语句,以使我的代码更干净?
有没有更好的方法来修改我的代码?

a14dhokn

a14dhokn1#

你可以使用一个简单的关联数组:

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

echo $your_food[$category];
8aqjt8rx

8aqjt8rx2#

你可以使用像array('junkFood' => "零食", ...)这样的数组来使它看起来更干净
例如:

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

xkftehaa3#

如果你只得到key => value“relation”,那么使用普通数组:

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

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

5t7ly7z54#

在其他答案的基础上进一步简洁,你可以更简单地写为:
echo ["vegetable"=>"蔬菜","fruit"=>"水果","meat"=>"肉類"...][$category]

3npbholx

3npbholx5#

你可以用一个返回值的开关来创建一个函数:

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

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

相关问题