1

私は最悪のエラーを抱えています...以下のコードは期待どおりに実行され、ifステートメントの両方の半分に期待どおりにアクセスしています(「TRUE」と「FALSE」の両方がエラーログに追加され、それらは、それらを引き起こした状態の出力の上に追加されます)。

しかし、のTRUE部分にアクセスするifと、なぜか反響しません。コードセクションがスキップされていないことはわかっています(error_log("TRUE");まだ実行されているため)。

コードの概要:

状態のリストをステップ実行し、HTML タグの半分を出力し (条件付きで中間ビットを追加)、最後に半分を出力します。

function createStateOptions($country, $state) {
    $sql = "SELECT * FROM tbl_state WHERE disabled != true AND deleted != true AND country = :country ORDER BY state ASC";
    $result = executeSQL($sql, array(':country' => $country));
    if (is_array($result)) {
        foreach ($result as $record) {
            echo '<option value="' . htmlentities($record["state"], ENT_QUOTES) . '" ';
            if($state == $record["state"]) {
                echo " selected";
                error_log("TRUE");
            } else {
                error_log("FALSE");
            }
            echo '>' . htmlentities($record["state"], ENT_QUOTES) . '</option>';
            error_log("'".$state."' == '".$record["state"]."'"); 
        }
    }
}
4

1 に答える 1

0

文字列を構築してから、最後にすべてエコーしてみてください

function createStateOptions($country, $state) {
  $output = '';
  $sql = "SELECT * FROM tbl_state WHERE disabled != true AND deleted != true AND country = :country ORDER BY state ASC";
  $result = executeSQL($sql, array(':country' => $country));
  if (is_array($result)) {
    foreach ($result as $record) {
        $output = '<option value="' . htmlentities($record["state"], ENT_QUOTES) . '" ';
        if($state == $record["state"]) {
            $output .= " selected";
            error_log("TRUE");
        } else {
            error_log("FALSE");
        }
        $output .= '>' . htmlentities($record["state"], ENT_QUOTES) . '</option>';
        error_log("'".$state."' == '".$record["state"]."'"); 
        echo $output;
    }
  }
}
于 2012-07-26T04:44:37.270 に答える