数组:第四维,isset 返回不可靠

发布于 2024-10-04 19:10:02 字数 306 浏览 7 评论 0原文

有谁知道这段代码怎么会与 yahoo 相呼应?显然没有第四个数组带有键“something”,但它一直认为是这样的。漏洞?特征?

$array = array('a' => array('b' => array('c' => 'test')));
echo '<pre>';
var_dump($array);
echo '</pre>';
if (isset($array['a']['b']['c']['something'])) {
    echo 'yahoo';
}

Does anybody know, how it can be, that this code echoes yahoo? There is clearly no 4th array with the key 'something', but it keeps thinking it's like that. Bug? Feature?

$array = array('a' => array('b' => array('c' => 'test')));
echo '<pre>';
var_dump($array);
echo '</pre>';
if (isset($array['a']['b']['c']['something'])) {
    echo 'yahoo';
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

灯角 2024-10-11 19:10:02

因为 PHP 认为您正在检查字符串“test”的“something”位置。请记住,字符串是字符数组。尝试回显 $array['a']['b']['c']['something']。

::编辑::

我解释了它,我并没有说它有道理。 :P

Because PHP thinks you are checking the 'something'th place of the string 'test'. Remember, strings are arrays of characters. try to echo $array['a']['b']['c']['something'].

::EDIT::

I Explained it, I didn't say it made sense. :P

陈独秀 2024-10-11 19:10:02

这里讨论了 PHP 在这个问题上的行为并提供了一个完全适合您问题的解决方案。

Here has discussed the behavior of PHP in this issue and provides a solution that is exactly for your problem.

独﹏钓一江月 2024-10-11 19:10:02

您想要使用 is_array($array['a']['b']['c']) 而不是 isset($array['a']['b ']['c']['something']) 在这种情况下,或者可能是两者的巧妙组合,以确保在检查时未设置时不会收到任何错误如果它是一个数组。

像这样的东西:

if(isset($array['a']['b']['c']['something']) && is_array($array['a']['b']['c'])){ [...] }

You'd want to use is_array($array['a']['b']['c']) rather than isset($array['a']['b']['c']['something']) in this case, or maybe a crafty combination of the two to make sure you don't get any errors if it's not set when you're checking to see if it's an array.

Something like:

if(isset($array['a']['b']['c']['something']) && is_array($array['a']['b']['c'])){ [...] }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文