Php 将If-Else转换为三值

Php 将If-Else转换为三值,php,Php,有人能帮我把下面的转换成三元吗 if ($idd == 1521) { return "Home<br /><img src=\"images/b-value.gif\" /><br />Best for Value"; } else if ($idd == 1595) { return "Home<br /><img src=\"images/b-dload.gif\"/><br />Best for Downloads

有人能帮我把下面的转换成三元吗

if ($idd == 1521) {
return "Home<br /><img src=\"images/b-value.gif\" /><br />Best for Value";
}
else if ($idd == 1595) { 
return "Home<br /><img src=\"images/b-dload.gif\"/><br />Best for Downloads";
}
else if ($idd == 1522) {
return "Business<br /><img src=\"images/b-value.gif\" /><br />Best for Value";
}
else if ($idd == 1596) {
return "Business<br /><img src=\"images/b-dload.gif\"/><br />Best for Downloads";
}
else if ($idd == 1523) {
return "Voice Product<br /><img src=\"images/vstream200.gif\" /><br />4 Guaranteed Calls";
}
else if ($idd == 1524) {
return "Voice Product<br /><img src=\"images/vstream350.gif\" /><br />7 Guaranteed Calls";
}
else if ($idd == 1525) {
return "Voice Product<br /><img src=\"images/vstream700.gif\"/><br />14 Guaranteed Calls";
}
else
return "";
if($idd==1521){
返回“Home

最佳价值”; } 如果($idd==1595){ 返回“主页

最适合下载”; } 否则如果($idd==1522){ 返回“业务最佳价值”; } 否则如果($idd==1596){ 返回“Business

最适合下载”; } 否则如果($idd==1523){ 返回“语音产品

4个保证通话”; } 否则如果($idd==1524){ 返回“语音产品

7个保证通话”; } 否则如果($idd==1525){ 返回“语音产品

14个保证通话”; } 其他的 返回“”;

谢谢。

你为什么不用开关呢

switch ($idd) {
   case 1521 : return "Home<br /><img src=\"images/b-value.gif\" /><br />Best for Value";
   case 1595 : return "Home<br /><img src=\"images/b-dload.gif\"/><br />Best for Downloads";
   default: return "";
}
交换机($idd){
案例1521:返回“Home

最佳价值”; 案例1595:返回“主页

最适合下载”; 默认值:返回“”; }
三元运算符似乎不适合您的情况。 为什么不使用简单的映射呢

$map = array(
    1521 => array('Home', 'b-value.gif', 'Best for Value'),
    1595 => array('Home', 'b-dload.gif', 'Best for Downloads'),
    1522 => array('Business', 'b-value.gif', 'Best for Value'),
    // and so on
);
if (array_key_exists($idd, $map)) {
    $item = $map[$idd];
    echo "{$item[0]} <br/> <img src=\"{$item[1]}\"/> <br/> {$item[2]}";
}
$map=array(
1521=>array('Home','b-value.gif','Best-for-value'),
1595=>array('Home','b-dload.gif','bestfordownloads'),
1522=>array('Business','b-value.gif','Best for value'),
//等等
);
如果(数组\键\存在($idd,$map)){
$item=$map[$idd];
回显“{$item[0]}

{$item[2]}”; }

或者,您可以从文件或数据库中提取地图。

我喜欢将类似的内容放入数组中

$data = array(
    "_1521" => "Home<br /><img src=\"images/b-value.gif\" /><br />Best for Value",
    "_1595" => "Home<br /><img src=\"images/b-dload.gif\"/><br />Best for Downloads",
    "_1522" => "Business<br /><img src=\"images/b-value.gif\" /><br />Best for Value"
    );
假设整件事都在这样的函数中

function getIddString($idd) {
    $data = array( /*stuff from above*/);

    return (/* stuff from above */);
}

然后,您可以随时随地调用它,以获取其中一个值。

因为似乎没有人愿意按照您的要求去做,下面是三元:

return ($idd == 1521
  ? "Home<br /><img src=\"images/b-value.gif\" /><br />Best for Value"
  : ($idd == 1595
    ? "Home<br /><img src=\"images/b-dload.gif\"/><br />Best for Downloads"
    : ($idd == 1522
      ? "Business<br /><img src=\"images/b-value.gif\" /><br />Best for Value"
      : ($idd == 1596
        ? "Business<br /><img src=\"images/b-dload.gif\"/><br />Best for Downloads"
        : ($idd == 1523
          ? "Voice Product<br /><img src=\"images/vstream200.gif\" /><br />4 Guaranteed Calls"
          : ($idd == 1524
            ? "Voice Product<br /><img src=\"images/vstream350.gif\" /><br />7 Guaranteed Calls"
            : ($idd == 1525
              ? "Voice Product<br /><img src=\"images/vstream700.gif\"/><br />14 Guaranteed Calls"
              : ""
            )
          )
        )
      )
    )
  )
);
返回($idd==1521) ?“家庭

最佳价值” :($idd==1595 ?“主页

最适合下载” :($idd==1522 ?业务价值最佳化 :($idd==1596 ?“商业

最适合下载” :($idd==1523 ?语音产品

4个保证通话 :($idd==1524 ?语音产品

7个保证通话 :($idd==1525 ?语音产品

14个保证通话 : "" ) ) ) ) ) ) );
但是,和其他人一样,我建议您使用交换机或数组映射。

这些数字看起来像数据库ID。如果是这种情况,一个更易于维护的解决方案是修改数据库模式以存储这些字符串,然后只从数据库中输出值,而不是尝试根据ID进行切换。

嵌套ternaries很难看,如果不小心使用括号,可能会导致不可预知的结果。不要这样做。等效开关是如何工作的?有几个人在答案中张贴了开关的示例。用三元书写的简单想法让我感到害怕。我每天在+1处看到这种东西,这也是一个非常好的选择,在我看来,这比任何一个和if/else或开关都好。这是正确的解决方案,但这并不是问题所要问的。如果有更好的选择来回答问题,那么这样做有什么错?@Dustin Fineout:那是因为问题错了。如果他问‘用圆珠笔锤打我的脚趾最好的方法是什么?’@Dustin Fineout:这个问题的‘错误’在于,这样我就可以在生产代码中看到这种东西,而这些人并不了解。尤其是PHP.Doh。被Michal()打败了良好实践,检查了密钥的存在。嘿,现在你知道为什么没有人愿意这么做了。使用regex replace在UltraEdit中花了5秒钟。我自己永远不会这么做,但说真的,要给出所要求的答案并不是那么难。哎哟,如果我来阿克罗斯这样的地方,要么就是口齿不清,要么就是我当场退出并谋杀了写这封信的人。当然这并不难,但总有一天,一些可怜的混蛋可能不得不查看这段代码。
return ($idd == 1521
  ? "Home<br /><img src=\"images/b-value.gif\" /><br />Best for Value"
  : ($idd == 1595
    ? "Home<br /><img src=\"images/b-dload.gif\"/><br />Best for Downloads"
    : ($idd == 1522
      ? "Business<br /><img src=\"images/b-value.gif\" /><br />Best for Value"
      : ($idd == 1596
        ? "Business<br /><img src=\"images/b-dload.gif\"/><br />Best for Downloads"
        : ($idd == 1523
          ? "Voice Product<br /><img src=\"images/vstream200.gif\" /><br />4 Guaranteed Calls"
          : ($idd == 1524
            ? "Voice Product<br /><img src=\"images/vstream350.gif\" /><br />7 Guaranteed Calls"
            : ($idd == 1525
              ? "Voice Product<br /><img src=\"images/vstream700.gif\"/><br />14 Guaranteed Calls"
              : ""
            )
          )
        )
      )
    )
  )
);