此代码有什么问题。它在编辑器中给出了语法错误
$posts = if($row['plans'] == 1000) { 2 } elseif($row['plans'] == 1001){ 8 }else{ $row['posts'] }
答案 0 :(得分:4)
你不能这样分配。你必须这样做。
if($row['plans'] == 1000) {
$posts = 2;
} elseif($row['plans'] == 1001) {
$posts = 8;
} else{
$posts = $row['posts'] }
答案 1 :(得分:2)
if($row['plans'] == 1000) { $posts = 2; } elseif($row['plans'] == 1001){ $posts = 8; }else{ $posts = $row['posts']; }
或使用开关/案例:
switch($row['plans']){
case 1000:
$posts = 2;
break;
case 1001:
$posts = 8;
break;
default:
$posts = $row['posts'];
break;
}
或者您可以使用三元运算符,例如人们已经给您的代码。
答案 2 :(得分:2)
你不能从if
条件赋值变量,你应该这样做:
if($row['plans'] == 1000) {
$posts = 2;
}
elseif($row['plans'] == 1001){
$posts = 8;
}
else{
$posts = $row['posts'];
}
替代语法(使用三元运算符?
):
$posts = ($row['plans'] == 1000) ? 2 : ($row['plans'] == 1001) ? 8 : $row['posts'];
更多替代语法(使用switch
):
switch($row['plans'])
{
case 1000:
$posts = 2;
break;
case 1001:
$posts = 8;
break;
default:
$posts = $row['posts'];
break;
}
答案 3 :(得分:2)
如果您打算进行单行分配,它的工作原理如下:
$posts = ($row['plans'] == 1000 ? 2 : ($row['plans'] == 1001 ? 8 : $row['posts']));
<condition> ? <true> : <false>
(三元操作)
答案 4 :(得分:1)
您可以像这样分配
$posts = $row['plans'] == 1000 ? 2 : ($row['plans'] == 1001 ? 8 : $row['posts']);