php - 在不同的文件中拆分开关案例

时间:2011-07-01 02:38:35

标签: php switch-statement

我有一个php文件,其中我使用的是非常长的开关盒。我想将案例分成不同的文件(将逻辑连接的案例保存在1个文件中)。

编辑:对不起每个人都是我的代码导致问题。开关盒按预期工作。

file - > a.php只会

echo "<br>RES = ".test(1);

function test($value) {
    switch($value) {
        case (1 || 2):
                include("b.php");
                            **return $temp;**
                break;

        default: echo "error";
                return 3;
                break;
    }
}

file - &gt; b.php

switch($value) {

    case 1: echo "value is 1";
                    **$temp = 1;**
            return 1;
            break;

    case 2: echo "value is 2";
                    **$temp = 2;**
                    return 2;
                    break;
}

我如何获得正确的结果?如果b.php的switch case在a.php文件中,那么一切正常。关于如何做到这一点的任何想法/建议?

如果我添加$ temp(粗线),那么它可以工作......

提前感谢您的帮助。

此致

3 个答案:

答案 0 :(得分:4)

更新了对更新问题的回复: 修改“a.php”并在“b.php”的前面返回前缀包括:

return include("b.php");

http://www.php.net/manual/en/function.include.php

  

处理退货:有可能   在一个内部执行一个return()语句   包含文件以便终止   处理该文件并返回   调用它的脚本。而且,它是   可以从中返回值   包含文件。你可以拿走这个价值   像你一样包含电话   正常功能。但是,这不是   包括远程文件时可能   除非输出远程文件   有有效的PHP开始和结束标记(如   与任何本地文件)。你可以申报   这些标签中需要的变量   他们将在   无论文件被包含在哪一点。


简单的include()在你的case / break部分中?

switch($var)
{
 case 1:
   include('case_1.php');
   break;
 case 2:
   include('case_2.php');
   break;
 default:
   include('case_default.php');
  break;
}

答案 1 :(得分:0)

这实际上是Scuzzy提出的东西(我甚至保留了相同的命名约定),但改进了:

// list of files
$my_files = array(
    'a' => 'case_1.php',
    'b' => 'case_2.php',
    'c' => 'case_3.php',
    'd' => 'case_4.php',
);

// determine which one to load
if (array_key_exists($var, $my_files)) {
    include($my_files[$var]);
} else {
    include('case_default.php');
}

甚至更短;):

$f = array('a','b','c','d');
include((in_array($var,$f)?$var:'case_default').'.php');

答案 2 :(得分:0)

switch($var)
{
    case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: //...
        include('case_' . $var . '.php');
        break;
    default:
        include('case_default.php');
        break;
}