这是我写的:
$Myprovince = (
($province == 6) ? "city-1" :
($province == 7) ? "city-2" :
($province == 8) ? "city-3" :
($province == 30) ? "city-4" : "out of borders"
);但是对于每个字段,我都得到了city-4的值。我想使用三元运算符而不是switch/if,因为我想进行实验,看看它是如何实现的。
这段代码有什么问题?
发布于 2011-03-09 01:02:29
其他人已经提出了正确的方法,但如果你真的想使用三元运算符,你需要使用括号作为:
$province = 7;
$Myprovince = (
($province == 6) ? "city-1" :
(($province == 7) ? "city-2" :
(($province == 8) ? "city-3" :
(($province == 30) ? "city-4" : "out of borders")))
);Updated Link
发布于 2011-03-09 00:57:38
不要滥用三元运算符来做这类事情。这使得调试几乎不可能进行。为什么不这样做呢?
switch($province) {
case 6: $Myprovince = "city-1"; break;
case 7: ...
}或者仅仅是一些链接的if/then/else
if ($province == 6) {
$Myprovince = "city-1";
} elseif ($province = ...) {
...
}发布于 2011-03-09 01:22:13
有些人建议使用switch语句或if/else语句。但我会使用数组来代替,以使其更易于维护和读取:
$provinces = array (
6 => 'city-1',
7 => 'city-2',
8 => 'city-3',
30 => 'city-4'
);
// then you can call:
$Myprovince = isset($provinces[$province]) ? $provinces[$province] : 'out of borders';为什么?
代码最终可能会更容易管理。也许有一天您会想要从数据库中添加这些省到市的映射。等等。这将很难用一堆switch/case语句来维护。
https://stackoverflow.com/questions/5235632
复制相似问题