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