【问题标题】:PHP Array and Switch Case StatementPHP 数组和 Switch Case 语句
【发布时间】:2012-07-26 02:37:25
【问题描述】:

我的代码不起作用。 它只是打印出默认值

这里是php

$updatesQuery = "SELECT * FROM updates WHERE Isnote = 0";
        $rs  = mysql_query($updatesQuery) or
        die("SQL: $usersQuery)<br />".mysql_error());
        while($row = mysql_fetch_array($rs)) {
            switch ($i){
                case $row[CatID]=1:
                    $i = "kunder";
                    break;
                case $row[CatID]=2:
                    $i = "bokningar";
                    break;
                case $row[CatID]=3:
                    $i = "offerter";
                    break;
                case $row[CatID]=4:
                    $i = "leverantorer";
                    break;
                case $row[CatID]=5:
                    $i = "kalender";
                    break;
                default:
                    $i = "no work";
                    break;
            }
            echo $i;                
        }

sql 查询有效。 但我的输出只是默认值。 “没有工作”。

我写错了什么?

【问题讨论】:

  • $i dude 的价值是多少...

标签: php arrays switch-statement case


【解决方案1】:

打开你的变量,在本例中为$row['CatID']

switch ($row['CatID']){
    case 1:
        $i = "kunder";
        break;
    case 2:
        $i = "bokningar";
        break;
    ...

【讨论】:

  • 这几乎肯定是发帖者想要达到的目标。
【解决方案2】:

看起来$i 从未设置,因此switch() 语句默认为(令人惊讶的)默认子句。

把你的代码改成这样;

        switch ($row['CatID']){
            case 1:
                $yourVar = "kunder";
                break;
        }   

switch 语句查看当前变量。如果该变量恰好是数据库中的一列,则需要评估 那个 特定变量。

如果您在切换之前为变量$i 分配了$row['catID'] 中的数据,那么您的代码将会工作。

【讨论】:

  • +1 而且我认为 OP 对 switch 的工作原理有一个不好的理解。 $row[CatID]=1 是一个没有多大意义的变量赋值……
【解决方案3】:

只是猜测

switch ($row['CatID']) {
  case 1:
    $i = "kunder";
    break;
  // And so on
}
  • $i 从未定义过
  • $row[CatID] 应该会触发通知,因为您忘记了 '
  • $row[CatID]=2 设置值,这在上下文中没有多大意义

【讨论】:

    【解决方案4】:
    switch($row['CatID'])
    

    然后用例 1:, case 2: 等等

    【讨论】: