在函数文件的末尾包含模板PHP文件

时间:2017-06-08 01:20:31

标签: php

我正在学习基础PHP和一本书。在本书中,我做了这个例子:

<?php
session_start()

if(array_key_exists("taskName", $_GET)) {
    $_SESSION["taskList"][] = $_GET["taskName"];
}

$taskList= [];

if(array_key_exists("taskList", $_SESSION)) {
    $taskList = $_SESSION["taskList"];
}

include "template.php";

&#34;包括template.php&#34;在&#34; functions.php&#34;结束时文件在书中使用,它似乎工作。但是,在我的例子中使用时,用于显示结果的template.php不起作用,这里是使用PHP代码的template.php部分:

<table>
            <tr>
                <th>Tasks</th>
            </tr>
            <?php foreach($taskList as $task) : ?>
            <tr>
                <td><?=$task?></td>
            </tr>
            <?php endforeach; ?>
        </table>

以下是错误显示:

Notice: Undefined variable: taskList in C:\xampp\htdocs\to-do-list\template.php on line 27

Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\to-do-list\template.php on line 27

根据我的理解,template.php并不是从functions.php获取信息的。

PHP Documentation

在上面的文档中有以下示例:

<?php
$a = 1;
include 'b.inc';
?>

所以,b.inc将有$ a var。这与书中的内容相同。

2 个答案:

答案 0 :(得分:1)

当我尝试下面的代码时,它在我的计算机上工作正常(它会产生一些输出)。

文件:first.php

<?php
$taskList = [];
$taskList[]=5;
$taskList[]=6;
include 'second.php';
?>

档案:second.php

<table>
  <tr>
    <th>Tasks</th>
  </tr>
  <?php foreach($taskList as $task) : ?>
    <tr>
      <td><?=$task?></td>
    </tr>
  <?php endforeach; ?>
</table>

答案 1 :(得分:1)

你的例子工作得很好,但是因为我无法想到从问题的确切位置开始,我建议

  • 修改session_start()行,在该行的末尾添加分号。
  • 确保打开functions.php文件的url而不是template.php文件。
  • 如果在请求没有GET参数的文件functions.php时应用此错误,则尝试提供参数。比如http://localhost/test/functions.php?taskName=anyName

这是我尝试的确切代码,并且使用和不使用参数调用functions.php并且工作正常

<强>的functions.php

<?php

session_start();

if(array_key_exists("taskName", $_GET)) {
    $_SESSION["taskList"][] = $_GET["taskName"];
}

$taskList= [];

if(array_key_exists("taskList", $_SESSION)) {
    $taskList = $_SESSION["taskList"];
}

include "template.php";

<强>的template.php

<table>
    <tr>
        <th>Tasks</th>
    </tr>
        <?php foreach($taskList as $task) : ?>
            <tr>
                <td><?=$task?></td>
            </tr>
        <?php endforeach; ?>
</table>