0

我把这个写在一个页面上:

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"] 变量呢?

4

3 回答 3

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()并查看是否有帮助。

于 2012-10-10T07:40:29.843 回答
0

在 $tab["activite"] 上做一个 var_dump

var_dump($tab["activite"]); 

如果它什么也没说,那么变量(或索引)不存在,并且您的文件以错误的方式包含(搜索路径?)。

您的错误日志还暗示您的索引“activite”不存在,您确定它是这样称呼的吗?也许是“激活”?希望这可以帮助。

于 2012-10-10T07:36:09.407 回答
0

您可以使用global全局$tab变量。但是很多程序员不建议在global没有必要的情况下使用。

但在你的情况下,我认为你必须global使用$tab

http://php.net/manual/en/language.variables.scope.php

于 2012-10-10T07:38:14.080 回答