PHP-将开关案例外包到不同的文件中
我想要一个switch case指令,但将所有case语句外包到不同的文件中。 像这样:PHP-将开关案例外包到不同的文件中,php,switch-statement,Php,Switch Statement,我想要一个switch case指令,但将所有case语句外包到不同的文件中。 像这样: <?php switch ($a) { foreach (glob("/path/*.php") as $filename) { include $filename; } } 您的第一个代码段将立即失败,因为它不是有效的语法。switch/case语句有一个真/假表达式系统。您可以在数组中使用来检索结果。(假设您要查找的文件名是$a) 示例: $fil
<?php
switch ($a) {
foreach (glob("/path/*.php") as $filename) {
include $filename;
}
}
您的第一个代码段将立即失败,因为它不是有效的语法。switch/case语句有一个真/假表达式系统。您可以在数组中使用来检索结果。(假设您要查找的文件名是$a
)
示例:
$files = ['/path/to/file.txt','/path/to/file2.txt'];
$a = '/path/to/file.txt';
switch($a) {
case in_array($a,$files) :
echo 'test';
break;
default :
}
$location = glob("/path/");
switch($a) {
case in_array($a,$location) :
include $a;
break;
default :
}
在您的示例中,您可以尝试:
$files = ['/path/to/file.txt','/path/to/file2.txt'];
$a = '/path/to/file.txt';
switch($a) {
case in_array($a,$files) :
echo 'test';
break;
default :
}
$location = glob("/path/");
switch($a) {
case in_array($a,$location) :
include $a;
break;
default :
}
这只是您可以做的示例代码。有许多其他方法可以实现这一点,但您尚未给出所有事实,例如$a
值
但是,您可能希望在$a
的不同值上运行一整套文件,另一个示例是:
switch($a) {
case 'value_of_something_one' :
foreach (glob("/path/to/one") as $filename) {
include $filename;
}
break;
case 'value_of_something_two' :
foreach (glob("/path/to/two") as $filename) {
include $filename;
}
break;
default :
}
希望这些都有帮助
PHP文档:(开关/案例)
您的第一个代码段将立即失败,因为它不是有效的语法。switch/case语句有一个真/假表达式系统。您可以在数组中使用来检索结果。(假设您要查找的文件名是$a
)
示例:
$files = ['/path/to/file.txt','/path/to/file2.txt'];
$a = '/path/to/file.txt';
switch($a) {
case in_array($a,$files) :
echo 'test';
break;
default :
}
$location = glob("/path/");
switch($a) {
case in_array($a,$location) :
include $a;
break;
default :
}
在您的示例中,您可以尝试:
$files = ['/path/to/file.txt','/path/to/file2.txt'];
$a = '/path/to/file.txt';
switch($a) {
case in_array($a,$files) :
echo 'test';
break;
default :
}
$location = glob("/path/");
switch($a) {
case in_array($a,$location) :
include $a;
break;
default :
}
这只是您可以做的示例代码。有许多其他方法可以实现这一点,但您尚未给出所有事实,例如$a
值
但是,您可能希望在$a
的不同值上运行一整套文件,另一个示例是:
switch($a) {
case 'value_of_something_one' :
foreach (glob("/path/to/one") as $filename) {
include $filename;
}
break;
case 'value_of_something_two' :
foreach (glob("/path/to/two") as $filename) {
include $filename;
}
break;
default :
}
希望这些都有帮助
PHP文档:(开关/案例)
我找到的唯一解决方案是将switch case更改为一些if语句:
$a = $_GET['something'];
foreach (glob("/path/*.php") as $filename) {
include $filename;
}
然后在a.php中
if ($a == 1) {
echo "hello1";
}
在b.php中
if ($a == 2) {
echo "hello2";
}
依此类推……我找到的唯一解决方案是将switch case更改为一些if语句:
$a = $_GET['something'];
foreach (glob("/path/*.php") as $filename) {
include $filename;
}
然后在a.php中
if ($a == 1) {
echo "hello1";
}
在b.php中
if ($a == 2) {
echo "hello2";
}
等等…我怀疑你不能。当前代码有哪些错误?@mkaatman我得到PHP解析错误:语法错误,意外的'foreach'(t\u foreach),预期的case(t\u case)或default(t\u default)或'}'
我无法想象这方面的用例@嗯,试着把它放在default:
case中,然后看看发生了什么。凯,我知道你想做什么。那不行。你也许可以用eval做一些巫术,但这是一个糟糕的计划。我怀疑你不能。你在当前代码中遇到了什么错误?@mkaatman I getPHP解析错误:语法错误,意外的“foreach”(t\u foreach),预期的case(t\u case)或default(t\u default)或“}”,我无法想象这个用例@嗯,试着把它放在default:
case中,然后看看发生了什么。凯,我知道你想做什么。那不行。你可以用eval做一些巫术,但这是一个糟糕的计划。在我的例子中,$a
的值是1
。您的示例假定$a
是文件名,对吗?此外,您的解决方案需要知道所有文件名。我想在不知道的情况下将所有文件都包含在目录中。但无论如何,thx@嗯,好的,您将$a
值与什么进行比较,如果它的值为1
,并且只有1
,则不需要表达式,如果值的变化类似于1、2、3等,那么它们与目录的比较在哪里?用于编辑的文件名为:Thx,但这不是解决方案,因为它不是一个或两个的值。存在不能固定为具体数字的n
值。$a
的值比较不同的字符串。这可能是1
但也可能是djfldkhfsl
。@MMM好的,但是该值是否与任何目录或文件名本身进行比较?在我的示例中,$a
的值为1
,您还知道如何更改希望以$a
的值运行的文件。您的示例假定$a
是文件名,对吗?此外,您的解决方案需要知道所有文件名。我想在不知道的情况下将所有文件都包含在目录中。但无论如何,thx@嗯,好的,您将$a
值与什么进行比较,如果它的值为1
,并且只有1
,则不需要表达式,如果值的变化类似于1、2、3等,那么它们与目录的比较在哪里?用于编辑的文件名为:Thx,但这不是解决方案,因为它不是一个或两个的值。存在不能固定为具体数字的n
值。$a
的值比较不同的字符串。这可能是1
但也可能是djfldkhfsl
。@MMM好的,但是该值是否与任何目录或文件名本身进行比较?除此之外,您如何知道如何更改希望在$a
值上运行的文件这看起来更像是一个逻辑解决方案。我本来打算用类似的东西更新我的答案,但我想你明白了!这看起来更像是一个合乎逻辑的解决方案。我本来打算用类似的东西更新我的答案,但我想你明白了!