我无法让include()
函数在我的代码中运行。基本上我有一个$order
数组,其中包含我的页面显示顺序。
在这种情况下:页码:1,2,3,4,5,6,如$order
数组中所示。
如果我只发布带有确切路径的6 include()
个函数,则会显示这些页面,但是如果我尝试将它们包含在此for()
循环中,则它不起作用。
$order
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 )
$fields = 6;
奇怪的部分是如果我制作阵列4,5,6,1,2,3它的工作完美:
$order Array ( [0] => 4 [1] => 5 [2] => 6 [3] => 1 [4] => 2 [5] => 3 )
仅显示前3页
for($x = 0; $x < $fields; $x++)
{
$page_info = mysql_query("SELECT * FROM pages WHERE id='" . $order[$x] ."'");
$pageInfo = mysql_fetch_array($page_info);
$pageNum = $pageInfo['id'];
if($pageNum <= 6)
{
$pagePath = "page" . $pageNum . ".php";
include($pagePath);
}
}
令人困惑的是,我知道它正在阅读每个$pageInfo['id']
,因为这是以下输出:
输出:123456
for($x = 0; $x < $fields; $x++)
{
$page_info = mysql_query("SELECT * FROM pages WHERE id='" . $order[$x] ."'");
$pageInfo = mysql_fetch_array($page_info);
echo $pageInfo['id'];
}
此作品
include("page1.php");
include("page2.php");
include("page3.php");
include("page4.php");
include("page5.php");
include("page6.php");
答案 0 :(得分:2)
你显然有你希望看到的数字(1-6),因为你正在将它们打印到屏幕上。您已经尝试过使用trim
的建议,这些建议无法让您更进一步。
我的假设是,用于调试的echo
位于if
语句之外,并且每次预期时if
语句都没有运行。首先,尝试将echo
置于if
语句中以确保输出相同,然后将var_dump($pagePath);
放入其中,以确保您的变量符合您的期望
您可以尝试另一件事,您可以确保该文件存在:
echo (file_exists($pagePath)) ? 'Exists' : 'Does not exist...';
您可以在包含的文件中向我们发送代码,以检查您是否从您的包含中覆盖$x
或$pageNum
等变量 - 变量在包含之间是全局的,并且会相互覆盖。< / p>
最后,我知道你会对此有一个很好的解释,但这看起来非常适合我,在这个特定的应用程序中,你可以这样做:
for($ i = 1; $ i&lt; = 6; $ i ++){ 包括'page'。 $ i。 '.PHP'; }
不推荐使用侧面说明:
mysql _ * 函数,您应该使用PDO或mysqli
。资源:
- http://php.net/manual/en/book.pdo.php
- http://php.net/manual/en/book.mysqli.php
PHP的include function是一种语言控制结构,而不是一个函数,所以不应该用括号:(对于你的downvoters,我不说它不能,我说它不应该)
// good:
include 'filename.php';
// bad:
include('filename.php');
答案 1 :(得分:2)
您可能已将$x
设置为其中一个包含内的某个数字。如果它只显示前三个,那么也许在page3.php中你有类似$x = 7;
的东西。
答案 2 :(得分:0)
1)我不建议在循环中获取数据库,但保留您的示例: 你可以在你的循环中尝试类似
if($pageNum ){ //lets omit the <=6 for the test.
$pagePath = "page" . $pageNum . ".php";
echo "include($pagePath);";
}
并检查结果,也许你得到的东西与你期望的不同。
答案 3 :(得分:0)
试试这个
for($x = 0; $x < count($order); $x++)
{
$page_info = mysql_query("SELECT * FROM pages WHERE id=" . $order[$x]);
$pageInfo = mysql_fetch_array($page_info);
foreach($pageInfo as $p_info)
{
$pageNum = $p_info['id'];
break;
}
if($pageNum <= 6)
{
$pagePath = "page" . $pageNum . ".php";
require_once($pagePath);//If it can't find the file then it will kill page and show corresponding error
}
}