Elseif包含,并回显外部变量?

时间:2010-07-02 03:37:27

标签: php include

我有一个Elseif语句,它获取模板名称并包含模板PHP文件,其中包含一个大型数组,它会在页面上输出结果。

$template = str_replace("-","_","{$_GET['select']}");
    if ($template == "cuatro"){
        include("templates/cuatro.php");
        echo $page_output;
    } elseif ($template == "ohlittl"){
        include("templates/ohlittl.php");
        echo $page_output;
    } else {
        echo "Sorry, template not found.";
    }

$page_output = "You've chosen $template_select[0].";

从那里,我收到通知说它找不到$ page_output变量。

  

注意:未定义的变量:第10行的C:\ ... \ template.php中的page_output

如果我把变量放在包含的文件中,它可以找到它。但我正试图让这个变量保留在这个页面上。我该如何完成?

2 个答案:

答案 0 :(得分:3)

您在回复之后定义$page_output。当你调用echo $page_output时,它还不存在。

尝试:

$page_output = "You've chosen {$template_select[0]}.";
$template = str_replace("-","_","{$_GET['select']}");
if ($template == "cuatro"){
    include("templates/cuatro.php");
    echo $page_output;
} elseif ($template == "ohlittl"){
    include(dirname(__FILE__) . "/templates/ohlittl.php");
    echo $page_output;
} else {
    echo "Sorry, template not found.";
}

虽然我不知道你是如何设置$template_select的,如果你知道它总会说同一个模板名称?

我相信另一种方法可以实现您的目标:

$templates = array('cuatro', 'ohlittl');
$selectedTemplate = strtolower(str_replace("-","_",$_GET['select']));

foreach ($templates as $template)
{
    if ($template === $selectedTemplate) {
       include(dirname(__FILE__) . "/templates/" . $template . ".php");
       echo "You've chosen {$template}.";
    }
}

答案 1 :(得分:0)

您的模板

  1. 直接输出文字(echo
  2. 将结果存储在全局(例如$page_output)或局部变量中(包含在函数内部发生,但对模板透明)。
  3. 返回输出(yes,includes可以返回值)。
  4. 您似乎想要选项2,但您的模板未定义任何$page_output变量。您还可以直接在模板中输出文本,缓冲输出,并将其分配给$page_output

    ob_start();
    include "file.php.inc";
    $page_output = ob_get_contents();
    ob_end_clean();