Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.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,我想要一个switch case指令,但将所有case语句外包到不同的文件中。 像这样: <?php switch ($a) { foreach (glob("/path/*.php") as $filename) { include $filename; } } 您的第一个代码段将立即失败,因为它不是有效的语法。switch/case语句有一个真/假表达式系统。您可以在数组中使用来检索结果。(假设您要查找的文件名是$a) 示例: $fil

我想要一个switch case指令,但将所有case语句外包到不同的文件中。 像这样:

<?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 get
PHP解析错误:语法错误,意外的“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
值上运行的文件这看起来更像是一个逻辑解决方案。我本来打算用类似的东西更新我的答案,但我想你明白了!这看起来更像是一个合乎逻辑的解决方案。我本来打算用类似的东西更新我的答案,但我想你明白了!