【问题标题】:php use switch within echo statementphp 在 echo 语句中使用 switch
【发布时间】:2013-04-12 09:51:04
【问题描述】:

我需要在 echo 语句中使用 switch 之类的语句

我找到了一种方法,但我认为这不是最好的方法 当我们想在 echo 中使用 IF 时,写一些类似的东西:

echo ((condition)?'print this if condition is True':'print this if condition is False');

我们可以将这种方法用于 switch 之类的方式:

echo ((case1)?'case 1 result':((case2)?'case2 result':((case3)?'case3 result':'default result')));

你知道更好的方法吗?

【问题讨论】:

  • 如何让它成为国家 - 将 echo 放在案例中?
  • 第一个示例中的三元运算符是在回显中执行此操作的最佳方法。否则,您需要在 switch 语句中构建 html 字符串并回显结果。
  • 我认为您应该使用switch 或一系列if 语句。链式三元运算符非常难以阅读。
  • 能和你一起思考,你心里有什么实际用途?

标签: php switch-statement echo


【解决方案1】:

您的示例称为三元运算符,它基本上是 if 语句的简写。

所以在你的第二个例子中,你只是在做一堆链式 if then else's

你最好做这样的事情

    switch ($type)) {
    case "txt":
         $output = "images/doctypes/icon_txt.gif";
    break;
    case "doc":
         $output = "images/doctypes/icon_doc.gif";
    break;
    case "docx":
         $output = "images/doctypes/icon_doc.gif";
    break;
    case "pdf":
         $output = "images/doctypes/icon_pdf.gif";
    break;
    case "xls":
         $output = "images/doctypes/icon_xls.gif";
    break;
    case "xlsx":
         $output = "images/doctypes/icon_xls.gif";
    break;
    case "ppt":
         $output = "images/doctypes/icon_ppt.gif";
    break;
    case "pptx":
         $output = "images/doctypes/icon_txt.gif";
    break;
    case "rtf":
         $output = "images/doctypes/icon_txt.gif";
    break;
    case "zip":
         $output = "images/doctypes/icon_zip.gif";
    break;
    case "rar":
         $output = "images/doctypes/icon_zip.gif";
    break;
    case "mdb":
         $output = "images/doctypes/mdb.gif";
    break;
    default:
         $output = "images/doctypes/icon_generic.gif";
    };

echo $output;

【讨论】:

  • 哎呀!为此使用 array 怎么样?或者,至少,对相似的值进行分组?
  • 我可以,但我不这样做主要是因为它在复制/粘贴示例中随着时间的推移而增长,最初只有 2-3 件事,但我也不会像那样回声。对于他的用法,虽然他想要一个三元的 switch case 选项,但这就​​是一个例子。是的,正如您指出的那样有点愚蠢,但它完全按照他在问题中想要的方式进行
  • 虽然您的示例不是很好,但您提出的观点是明智的,请将逻辑保留在 echo 语句之外。
【解决方案2】:

嗯。如果我理解正确,您想知道第一个成功的条件是多少?

我只是想出了这个......看看它是否适合你。

只需将 false/true 替换为您的条件即可。

$i = 0;
++$i AND false OR // 1
++$i AND false OR // 2
++$i AND false OR // 3
++$i AND true  OR // 4 (here we go)
++$i AND false OR // 5
++$i AND true  OR // 6 (ignored)
++$i AND false OR // 7
$i = 0;           // 0

echo "case" . $i . " result"; // echoes 'case4 result' 

编辑:
这是使用相同技术的另一种方法。
但是,您可以提供自己的成功字符串,而不是计数器。
请记住将 false/true 替换为您的条件。

function dostuff($str) { echo $str; return true;}

false AND dostuff('string1') OR
false AND dostuff('string2') OR
false AND dostuff('string3') OR
true  AND dostuff('string4') OR // echoes 'string4'
false AND dostuff('string5') OR
true  AND dostuff('string6') OR // ignored
false AND dostuff('string7');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-20
    • 2021-05-08
    • 2013-12-19
    • 1970-01-01
    • 1970-01-01
    • 2011-10-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多