Php 调用“后未定义索引”;要求“一次”;
我在一页纸上写下:Php 调用“后未定义索引”;要求“一次”;,php,Php,我在一页纸上写下: require_once("pdf/tab_activite.php"); ... foreach ($tab["activite"] as $key => $value) { ... } 在选项卡_activite.php中有以下内容: ... $list = new activite($this->db); $list->lireParNiveau($critere); $tab["activite"] = $list->tableau
require_once("pdf/tab_activite.php");
...
foreach ($tab["activite"] as $key => $value)
{
...
}
在选项卡_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”]变量呢?在$tab[“activite”]上进行变量转储
如果它没有显示任何内容,那么变量(或索引)就不存在,并且您的文件以错误的方式包含(搜索路径?)
此外,您的错误日志提示您的索引“activite”不存在,您确定它被称为“activite”吗?也许是“激活”?希望这有帮助。您可以使用
global
来全局化$tab
变量。但许多程序员并不建议在没有必要时使用global
但在您的情况下,我认为您必须为$tab
使用global
由于在函数内调用了
require_once()
,因此$tab[“activite”]
仅存在于该函数的作用域中。添加语句global$tab在使用$tab
变量扩展其范围以便主程序也可以看到它之前,先将code>添加到文件tab\u activite.php
global $tab;
$list = new activite($this->db);
$list->lireParNiveau($critere);
$tab["activite"] = $list->tableau ;
编辑:如果多次调用该函数,可能会出现另一个问题,因为在使用require\u once()
时,该文件只包含一次。如果是这种情况,将require\u once()
替换为require()
,看看这是否有帮助。是函数中的一个吗?是的,代码require\u once
在函数中,而选项卡\u activate.php
只是一行代码(没有函数)!var_dump还可以:它显示了我想要的所有结果。索引名为activite!$tab['activite']是一个列表吗?如果你正在获取你想要的信息,在foreach之前做一个var_转储,这意味着你没有任何范围问题,因此全局性是过度的。这至少到目前为止已经解决了。您介意发布部分var_转储吗?函数内部global$tab代码>当我写global$tab[“activite”]时,日志是这样的代码>:[10-Oct-2012 10:49:31]PHP解析错误:语法错误,在C:\wamp\www\mp\models\pdf\tab_activite.PHP的第52行,意外的“[”,预期的“,”或“;”,即使添加了global$tab;
:)@pheromix:isforeach()
也在函数内部?它与require\u once()函数相同吗?
是的,它们在同一个函数内部。@pheromix:是否多次调用该函数?请参阅我更新的答案。
global $tab;
$list = new activite($this->db);
$list->lireParNiveau($critere);
$tab["activite"] = $list->tableau ;