【问题标题】:if/elseif/else only returning first conditionif/elseif/else 只返回第一个条件
【发布时间】:2015-05-20 05:17:36
【问题描述】:

我对以下 if/elseif/else 语句有 2 个问题:

$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条件。

不知道我在这里做错了什么,非常感谢任何帮助,谢谢。

【问题讨论】:

  • = 是一个赋值运算符,除非您分配的值无法计算为 false,否则它将始终返回 true,因此以下 if 分支将是每次都执行。== 是一个相等运算符,您当然打算使用它——唯一的解释是变量与字符串不匹配,您应该调试您的数据库输出以自己查看。
  • 谢谢,我一添加var_dump($row),它就开始正常运行。不知道问题是什么,我的字符串看起来是正确的。现在唯一的问题是我的 else for when nothing match 有奇怪的行为,但看起来其余的都可以。谢谢。

标签: php if-statement pdo modx


【解决方案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;
}

【讨论】:

    猜你喜欢
    • 2021-07-11
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 2010-10-12
    • 2016-11-21
    • 1970-01-01
    • 2015-06-16
    • 1970-01-01
    相关资源
    最近更新 更多