我在一页中写道:
require_once("pdf/tab_activite.php");
...
foreach ($tab["activite"] as $key => $value)
{
...
}
在tab_activite.php中有这样的:
...
$list = new activite($this->db);
$list->lireParNiveau($critere);
$tab["activite"] = $list->tableau ;
...
然后在日志中有:
[10-Oct-2012 10:30:48] PHP Notice: Undefined index: activite in C:\wamp\www\mp\models\objet.class.php on line 543
[10-Oct-2012 10:30:48] PHP Warning: Invalid argument supplied for foreach() in C:\wamp\www\mp\models\objet.class.php on line 543
那么如何正确操作$ tab [“activite”]变量?
答案 0 :(得分:1)
由于在函数内部调用require_once()
,$tab["activite"]
仅存在于该函数的范围内。在使用global $tab;
变量扩展其范围之前,将语句tab_activite.php
添加到文件$tab
,以便主程序也能看到它。
global $tab;
$list = new activite($this->db);
$list->lireParNiveau($critere);
$tab["activite"] = $list->tableau ;
编辑:如果多次调用该函数,可能会出现另一个问题,因为使用require_once()
时文件只包含一次。如果是这种情况,请将require_once()
替换为require()
,看看是否有帮助。
答案 1 :(得分:0)
在$ tab [“activite”]
上执行var_dumpvar_dump($tab["activite"]);
如果它什么也没说,那么变量(或索引)就不存在了,你的文件被错误地包含了(搜索路径?)。
此外,您的错误日志暗示您的索引“活动”不存在,您确定它被称为?也许它是“激活”?希望这会有所帮助。
答案 2 :(得分:0)
您可以使用global
全球化$tab
变量。但是,如果没有必要,许多程序员不建议使用global
。
但在您的情况下,我认为您必须使用global
作为$tab