【问题标题】:switch statement outputs the number 1switch 语句输出数字 1
【发布时间】:2014-12-24 06:27:55
【问题描述】:

我有一个小问题,我有即将到来的 swich 声明。

            $usertype = 1;
       switch ($usertype) {

            case "0":
                echo require 'a.php';        
                break;
            case "1":
                echo require 'b.php';
                break;
            default:
               echo require 'c.php';
        }

我调用的三个文件中的每一个都包含它们命名的字母。 此语句打印 '1' 以及文件名的字母 ao。

例如:如果$usertype = 1; 输出为b1 等等。

这可能是什么原因?

我使用 if 语句收到相同的输出。

我发现以前有人问过这个问题,但对我没有太大帮助。

Why does this code output 1?

任何帮助都会很棒

【问题讨论】:

  • 你能告诉我们你的 a.php 、 b.php 、 c.php 中有什么吗?
  • a.php 包含字母 a,b.php 包含字母 b,c.php 包含字母 c,没有任何其他 html 或 php 代码
  • 在 a.php 中试试这个
  • 还有一个问题,当它是 a.php 和 c.php 时,输出是什么?
  • 我将它复制到 b.php 文件中,现在它只输出字母 b ($usertype = 1) 而没有数字,但它会杀死其余的代码

标签: php switch-statement


【解决方案1】:

尝试不使用 echo 语句,如果您将 echo 与 require 一起使用,那么它将返回布尔值 0/1,因此它也输出 1。

   $usertype = 1;
   switch ($usertype) {
        case "0":
             require 'a.php';        
            break;
        case "1":
             require 'b.php';
            break;
        default:
            require 'c.php';
    }

【讨论】:

  • 我猜是回声使 1 出现,也许回声确认这是一个真实的结果。 tnx你们所有人
【解决方案2】:

第一次尝试不带引号:

   $usertype = 1;   
   switch ($usertype) {
        case 0:
            require 'a.php';        
            break;
        case 1:
            require 'b.php';
            break;
        default:
           require 'c.php';
    }

当您调用 require 时,还可以删除“echo”。

其余问题与 a.php、b.php 和 c.php 相关。

【讨论】:

  • 按照您的建议尝试使用引号,仍然得到相同的输出
  • 我更新了我的答案。请通过 pastebin.com 或 gist 发布 a.php、b.php 和 c.php 的内容。可能问题出在这些文件中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-26
  • 2013-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多