如果Else转换为三元

时间:2009-07-01 14:38:36

标签: 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";
}
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 "";

感谢。

5 个答案:

答案 0 :(得分:26)

三元运算符似乎不适合您的情况。 为什么不使用简单的映射

$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]}";
}

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

答案 1 :(得分:11)

由于没有其他人愿意按你的要求做,所以这是三元:

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"
              : ""
            )
          )
        )
      )
    )
  )
);

但是,和其他人一样,我建议你使用开关或数组映射。

答案 2 :(得分:5)

为什么不使用开关?

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 "";
}

答案 3 :(得分: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"
    );

然后你可以像这样回报:

return (array_key_exists("_$idd", $data) ? return $data[$idd] : "");

假设整个事情都在这样的函数中

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

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

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

答案 4 :(得分:2)

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