我正在尝试将foreach()
放在交换机内。但我得到以下错误代码:
解析错误:语法错误,意外的'foreach'(T_FOREACH),期待 案例(T_CASE)或默认(T_DEFAULT)或'}' 第20行的/.../index.php
我从à$lang
$_GET['']
值
$dir = 'content/'.$lang;
$scan = array_diff(scandir($dir), array('..','.'));
switch($page) {
foreach ($scan as $value){
$value_ext_free = pathinfo($value, PATHINFO_FILENAME);
case $value_ext_free :
$page = $value_ext_free;
break;
}
default :
$page = 'welcome';
}
对我而言似乎很合乎逻辑,但我不是PHP专家......任何想法?
修改
我只是用这个更新我的代码:
$dir = 'content/'.$lang;
$scan = array_diff(scandir($dir), array('..','.'));
foreach ($scan as $value){
$value_ext_free = pathinfo($value, PATHINFO_FILENAME);
}
if($page == $value_ext_free) {
include 'content/'.$lang.'/'.$page.'.php';
}
else {
include 'content/'.$lang.'/welcome.php';
}
它几乎正常工作,只是我的文件夹的最后一页正在内容中工作......:/
Thankssss! :) Katsele
答案 0 :(得分:2)
对更新后代码的更正:
$dir = 'content/'.$lang;
$scan = array_diff(scandir($dir), array('..','.'));
$default = true;
foreach ($scan as $value){
$value_ext_free = pathinfo($value, PATHINFO_FILENAME);
if ($page == $value_ext_free) {
include 'content/'.$lang.'/'.$page.'.php';
$default = false;
break;
}
}
if ($default) {
include 'content/'.$lang.'/welcome.php';
}
答案 1 :(得分:1)
case
必须直接位于交换机旁边
Foreach将为数组的每个索引进行迭代 如果我正确理解你想要的东西(你的代码对我来说似乎不合逻辑),你可能需要这样的东西
$dir = 'content/'.$lang;
$scan = array_diff(scandir($dir), array('..','.'));
foreach ($scan as $value){
$value_ext_free = pathinfo($value, PATHINFO_FILENAME);
$page = $value_ext_free;
}
if(!isset($page))
$page = 'welcome';
答案 2 :(得分:0)
这种实施方法很危险,不推荐使用。
PHP Switch我非常确定您需要一个案例令牌,例如:
Case X
并在其中包含语句块。因此,对于其中的每个区块。
好像你甚至不需要切换它。
$dir = 'content/'.$lang;
if(file_exists($dir . DIRECTORY_SEPARATOR . $GET['filename']))
$page = $GET['filename'];
else
$page = 'welcome';
答案 3 :(得分:0)
对于switch语句使用以下语法
<?php
switch ($variable) {
case 'value':
runFunction1('value');
break;
case 'value2':
runFunction1('value2');
break;
default:
runFunction1('default');
break;
}
?>