1

如果访问空引用的未定义索引,PHP 不会抛出任何错误。

<?php

$array = &$foo['bar'];
if ($array['stuff']) echo 'Cool'; // No PHP notice
$array['thing'] = 1; // Array created; $foo['bar']['thing'] == 1
$array['stuff']; // PHP notice

如果$array不是参考 PHP 会在第一行抱怨。

为什么不作为参考?我需要为 null 引用烦恼 isset,还是 PHP 在内部抱怨而不让我知道?

4

3 回答 3

1

在您的代码$array中为空。以下代码也不会通知您:

$b = null;
if ($b['stuff']) echo 'cool';

这很奇怪,文档中的这条评论指出了这一事实。

于 2012-06-13T23:16:39.417 回答
1

您必须提高错误报告级别。您的示例$array['stuff']将引发有关未找到索引的警告。我经常将 key in 测试与评估结合起来,以防止出现这些警告:

if( array_key_exists("blah",$arr) && strlen($arr['blah']) > 0 ) { 
    ; // do stuff here
}

我经常将变量与数组名称结合起来,因为每当我必须将复制代码剪切并粘贴到下一部分以执行相同的操作时,我宁愿创建一个变量名称数组,然后遍历变量名称。最荒谬的情况是当我要处理计费和运输数据时,我将有一个数组变量名称$BorS,或者只是$BS然后在顶部,设置$BorS="shipping";并最终得到非常有趣的语句,例如:

${$BorS."data"}[${$BorS."_addr1"}]=$input_array[$BorS."_address_line_1"];
于 2012-06-13T23:20:10.087 回答
-2

为什么不这样做:

$array = array();
于 2012-06-13T23:14:46.657 回答