2015-05-19 38 views
0

我有2個問題如下,如果/ ELSEIF/else語句:如果/ ELSEIF /其他只返回第一個條件

$rows = array(); 
$stmt = $dbconnection->query("SELECT * FROM TABLE_NAME WHERE data_field LIKE 'data_selection'"); 
if ($stmt) { 
    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { 
     array_push($rows, $row); 

     if ($row['something '] == 'selection1') { 
      $highlightsarray = array("gridHighlights" => 'text option 1 to display on site'); 
      $highlights = $row + $highlightsarray; 
       } elseif ($row['something'] == 'selection2') { 
      $highlightsarray = array("gridHighlights" => 'text option 2 to display on site'); 
      $highlights = $row + $highlightsarray; 
       } else { 
      $highlights = "<p>default messaging</p>"; 
     } 
     $fields = $highlights; // this is a placeholder for other if statements I need to add 
     $output .= $modx->getChunk('chunk_name', $fields); 

    } 
} 
return $output; 
} 

我遇到的第一個問題是==沒有返回任何結果,如果我改變它到=然後它有些作品。

如果我讓我的發言($row['something '] = 'selection1')(只=),則僅返回第一if條件,即使它是不正確的,應該返回無論是elseifelse條件。

不知道我在做什麼錯在這裏,任何援助非常感謝,謝謝。

+1

'='是一個賦值操作符,除非你賦值的值不能被賦值爲'false',它總是返回'true',所以下面的'如果每次都會執行'branch'. == ==是一個相等運算符,你當然會用它來代替它 - 唯一的解釋就是你的變量與字符串不匹配,你應該調試你的數據庫輸出看你自己。 – potashin

+0

謝謝,只要我添加了一個'var_dump($ row)',那麼它就開始行爲正確了。不知道問題是什麼,我的字符串看起來是正確的。現在唯一的問題是,我的其他人什麼時候都沒有匹配有奇怪的行爲,但它看起來像其餘的是好的。謝謝。 – Robert

+0

不客氣 – potashin

回答

1

關閉這個問題,根據建議做一個var_dump並檢查我的字符串得到了這個工作。這裏是最終使用的代碼:

$rows = array(); 
$stmt = $dbconnection->query("SELECT * FROM TABLE_NAME WHERE data_field LIKE 'data_selection'"); 
if ($stmt) { 
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { 
    array_push($rows, $row); 

var_dump($row); // to review output 

    if ($row['something '] == NULL) { 
     $highlights = $row; 
      } elseif ($row['something'] == 'selection2') { 
     $highlightsarray = array("gridHighlights" => 'text option 2 to display on site'); 
     $highlights = $row + $highlightsarray; 
      } elseif ($row['something'] == 'selection1') { 
     $highlightsarray = array("gridHighlights" => 'text option 1 to display on site'); 
     $highlights = $row + $highlightsarray; 
    } 
    $fields = $highlights; // this is a placeholder for other if statements I need to add (like $fields = $highlights + $anotherIfStatement;) 
    $output .= $modx->getChunk('chunk_name', $fields); 

} 
} 
return $output; 
}