2011-11-12 130 views
0

這段代碼有什麼問題。它在編輯器中給我語法錯誤簡單的php代碼語法錯誤

$posts = if($row['plans'] == 1000) { 2 } elseif($row['plans'] == 1001){ 8 }else{ $row['posts'] } 

回答

1

您可以將它像這樣

$posts = $row['plans'] == 1000 ? 2 : ($row['plans'] == 1001 ? 8 : $row['posts']); 
+0

,使它相當難以理解。 –

+0

@ DanielA.White這是我頭上第一個解決方案,但你是對的。 – Nasreddine

+0

這是做這個工作和我的第一個答案。所有其他答案也適用。謝謝大家 – Pinkie

4

你不能這樣分配。你必須這樣做。

if($row['plans'] == 1000) { 
    $posts = 2; 
} elseif($row['plans'] == 1001) { 
    $posts = 8; 
} else{ 
    $posts = $row['posts'] } 
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

您不能分配值從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; 
} 
2

如果你在一個單行分配意圖,它的工作原理是這樣的:

$posts = ($row['plans'] == 1000 ? 2 : ($row['plans'] == 1001 ? 8 : $row['posts'])); 

<condition> ? <true> : <false>(三元操作)