3

我需要在 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')));

你知道更好的方法吗?

4

2 回答 2

0

您的示例称为三元运算符,它基本上是 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;
于 2013-04-12T09:54:58.170 回答
0

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

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

只需将 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');
于 2013-12-08T22:23:45.613 回答