Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php-在不同文件中拆分开关案例_Php_Switch Statement - Fatal编程技术网

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

php-在不同文件中拆分开关案例,php,switch-statement,Php,Switch Statement,我有一个php文件,其中我使用了一个非常长的开关盒。我想将案例拆分为不同的文件(将逻辑连接的案例保存在一个文件中) 编辑:对不起,各位,是我的代码造成了问题。开关箱按预期工作 文件->a.php echo "<br>RES = ".test(1); function test($value) { switch($value) { case (1 || 2): include("b.php");

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

编辑:对不起,各位,是我的代码造成了问题。开关箱按预期工作

文件->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;
    }
}
如何获得正确的结果?如果b.php的switch case在a.php文件中,那么一切都很好。有什么想法/建议吗

如果我添加$temp(粗体线条),那么它会工作

提前谢谢你的帮助


关于更新问题的更新回复: 修改“a.php”并在“b.php”前面加上返回前缀,包括:

处理退货:可以 在 包括文件以便终止 在该文件中处理并返回到 那个叫它的剧本。而且,它是 可以从中返回值 包括文件。你可以取这个值 如您所愿,包括通话 正常功能。但这不是,, 在包含远程文件时可能 除非远程文件的输出 具有有效的PHP开始和结束标记(如下所示) 使用任何本地文件)。你可以申报 这些标记中所需的变量 并将于 无论文件包含哪一点


您的case/break部分中的simple include()

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

这实际上是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');
}
甚至更短;):


你好,谢谢你的回复。我试过了,但没用。我的档案里有5个案子,那我怎么办?关于我的示例,由于您没有发布任何代码示例,所以我只为您提供了一个通用结构,供您在自己的系统中使用。如果您想在字符串上匹配用例“foo”,请使用不同的$var:您好,谢谢您的回复。我已经编辑了我的问题,想提出一些想法。很抱歉,一开始我以为是开关箱引起了问题,但事实并非如此。RegardsSee现在这很有趣,这看起来像一个bug,因为包含的文件在函数中丢失了一些信息,返回的行为与预期的不一样。确切地说。。。你知道如何克服这个问题吗?
switch($var)
{
 case 1:
   include('case_1.php');
   break;
 case 2:
   include('case_2.php');
   break;
 default:
   include('case_default.php');
  break;
}
// 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');
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;
}