我正在尝试包含一个文件,但它似乎不起作用 - 这是整个代码:
if (file_exists('config/categories.php')) {
include ('config/categories.php');
}
foreach ($categories as $cat_sef => $cat_name) {
echo '<a href="'.$full_domain.$cat_sef.'" alt="#">'.$cat_name.'</a><br />';
}
config / categories.php的内容只是一个数组:
$categories = array("category-1" => "Category 1",
"category-2" => "Category 2",
"category-3" => "Category 3")
我知道该文件存在,因为以下工作:
if (file_exists('config/categories.php')) {
echo "file exists";
}
但是如果我用categories:
替换categories.php中的数组echo "testing";
也不显示任何内容。因此,据我所知,该文件存在但似乎并没有包括一些如何。如果我将类别文件重命名为其他内容,我将收到“无此文件”错误(文件不存在)。
使用原始代码段,我得到的错误是:
Notice: Undefined variable: categories
但正如您所看到的,它在categories.php文件中定义。
它唯一的工作方式是将数组放在我的代码的if(file_exists)部分的位置,我不想这样做,因为其他部分依赖于那些categories.php文件,所以我不这样做想要在多个文件中欺骗数组。
有谁知道这可能是什么?如果您需要更多信息,请与我们联系。
答案 0 :(得分:5)
这里有两个选项:
使用include(dirname(__FILE__).'/config/categories.php')
确保您包含此文件,而不是其他'config / categories.php'
仔细检查categories.php是否包含像<?php
那样打开php标签。看起来显而易见,但我在代码审查中不止一次地看到过这一点。
希望这有帮助!
答案 1 :(得分:2)
您刚刚在 if 运营商范围内添加了$ category,因此您无法在外部使用$ categories。只需在列入之前引入$ categories
$categories = null;
if (file_exists('config/categories.php')) {
include ('config/categories.php');
}
foreach ($categories as $cat_sef => $cat_name) {
echo '<a href="'.$full_domain.$cat_sef.'" alt="#">'.$cat_name.'</a><br />';
}
答案 2 :(得分:2)
file_exists
和include
不会以相同的方式查找文件。 include使用include_path
选项并在differents目录中搜索您的文件。
如果您真的想知道是否可以包含文件,则应使用绝对路径。
另一件事。如果您的foreach ($categories
代码位于函数内,则需要将$categories
变量定义为全局变量。因为include
总是在全局上下文中完成。
答案 3 :(得分:0)
如果您之前已经包含此文件,请使用include_once
。
答案 4 :(得分:-1)
如果您的文件存在,请检查php.ini文件并设置short_tag_open=on
。它可能有用。