在php中切换()和foreach()问题

时间:2015-04-27 14:01:42

标签: php foreach switch-statement

我正在尝试将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

4 个答案:

答案 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;
}
?>