未定义或已定义的索引?决定

Undefined or defined index ? Decide

提问人:grongor 提问时间:3/10/2011 最后编辑:Charlesgrongor 更新时间:3/31/2011 访问量:768

问:

我有奇怪的问题。

Line 61: $this->_currentRoute = Default_Model_Routes::getInstance()->getCurrentRoute();
.......... other code ..........
Line 86: var_dump(isset($this->_currentRoute['url']));
Line 87: var_dump($this->_currentRoute['url']);
Line 88: if ($this->_currentRoute['url'] == $currentUrl)
Line 89:     $navigation[$key]['active'] = true;
Line 90: var_dump($this->_currentRoute);

结果如下:

bool(true)
string(62) "cs/Polozka-menu-1/Polozka-menu-1-1/Polozka-menu-1-1-1/Clanek-1"
array(17) {
  ["url"]=>
  string(62) "cs/Polozka-menu-1/Polozka-menu-1-1/Polozka-menu-1-1-1/Clanek-1"
  ["type"]=>
  string(7) "article"
  ............
}

在错误日志中:

[09-Mar-2011 19:49:32] PHP Notice:  Undefined index: url in ...file... on line 87
[09-Mar-2011 19:49:32] PHP Notice:  Undefined index: url in ...file... on line 88

如果您有任何想法,哪里可能有问题或如何解决,请告诉我。 谢谢:)

我尝试了另一个测试:

$test = array();
echo $test['lol'];

有了这个结果:

Notice: Undefined index: lol in ...file... on line 92

有人认为非常有趣:输出中显示了这个“lol”错误,但“url”错误不是!它只在日志中......为什么?????这是同一个文件,在“url”var_dump()下行......疯狂

php apache zend-framework zend-server undefined-index

评论

0赞 Charles 3/10/2011
给你什么?该数组中可能没有键。var_dump($this->_currentRoute)url
0赞 grongor 3/10/2011
...它给出带有路由信息的数组,包括 'url' ...
0赞 Charles 3/10/2011
你能在你的帖子中提供该var_dump的输出吗?
0赞 Charles 3/10/2011
哇,这太怪异了。 很明显。我什么都没有'......url
1赞 grongor 3/10/2011
我希望你能告诉我一些别的事情:D......我只是在日志中看到它,所以“啊,我忘了检查帖子什么的,让我们修复它......”"...WTF“:D这真的让我很烦恼

答:

0赞 azat 3/10/2011 #1

也许这不是你的错误?

尝试
并查看方法
ini_set('display_errors', 1);Default_Model_Routes::getInstance()->getCurrentRoute()::__get()

阅读此文

评论

0赞 grongor 3/10/2011
是的,真的是......我真的不明白你说的那个方法是什么意思......getCurrentRoute() 返回简单数组 - 索引的定义正如您在我的 var_dump() 中看到的那样......顺便说一句,如果我在“标题”或“内容”索引上执行 var_dump(),它也会正确检索它,但 alse 会抛出相同的错误......
0赞 azat 3/10/2011
试试这个 $this->_currentRoute['url'] = 'test';var_dump($this->_currentRoute['url']);
0赞 grongor 3/10/2011
...这不会抛出错误......但这对我也无济于事,:D......顺便说一句,在“url”索引中没有问题,问题出在这个数组中的所有索引中......它们显示、工作和存在 - 但抛出错误......哈哈
2赞 Ben DeMott 3/10/2011 #2

如果先赋值给变量,会发生什么情况?$this->_currentRoute

$route = $this->_currentRoute;
var_dump(array_key_exists('url', $route));
var_dump(isset($route['url']));
print "PRINTING: ".$route['url'];
die("ENDING ON LINE [".__LINE__."] !!!");

已解决(见评论)

不幸的是,这是 Zend Server 或前沿 PHP 5.3.3 的问题。

评论

0赞 grongor 3/10/2011
bool(true)、bool(true)、cs/Polozka-menu-1/Polozka-menu-1-1/Polozka-menu-1-1-1/Clanek-1 AND 确切错误指出索引未定义
0赞 Ben DeMott 3/10/2011
你是说它打印出 cs/Polozka-men......(这是 URL)???我认为您的问题可能与其他问题有关,我编辑了我的帖子 - 更改您的代码以遵循并查看会发生什么。
0赞 grongor 3/10/2011
是的,它打印了所有内容。我不认为这个问题与代码有关——它是完美而简单的......但是,问题出在哪里呢?...
0赞 grongor 3/10/2011
这是结果: bool(true), bool(true), PRINTING: cs/Polozka-menu-1/Polozka-menu-1-1/Polozka-menu-1-1-1/Clanek-1, ENDING ON LINE [90] !!
0赞 Ben DeMott 3/10/2011
那没有错吗?- 这意味着索引错误发生在其他地方,或者您有一个不稳定的 PHP 模块/共享对象或 PHP 发行版。