php-在不同文件中拆分开关案例
我有一个php文件,其中我使用了一个非常长的开关盒。我想将案例拆分为不同的文件(将逻辑连接的案例保存在一个文件中) 编辑:对不起,各位,是我的代码造成了问题。开关箱按预期工作 文件->a.phpphp-在不同文件中拆分开关案例,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");
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;
}