Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 调用“后未定义索引”;要求“一次”;_Php - Fatal编程技术网

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:is
foreach()
也在函数内部?它与
require\u once()函数相同吗?
是的,它们在同一个函数内部。@pheromix:是否多次调用该函数?请参阅我更新的答案。
global $tab;
$list = new activite($this->db);
$list->lireParNiveau($critere);
$tab["activite"] = $list->tableau ;