我有一个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(粗线),那么它可以工作......
提前感谢您的帮助。
此致
答案 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;
}