3

是否有可能在以下代码中收到警告?

error_reporting(E_ALL);

  $s = array(
      'a' => '1',
      'a' => '1'
   );

var_export( $s );
4

2 回答 2

1

您唯一的希望(除了count-ing 自己)是您的编辑器足够聪明,可以突出显示错字。此屏幕截图来自 PHPStorm:

在此处输入图像描述

于 2012-12-12T10:39:31.767 回答
0

在这种情况下,您不能使用标准数组真正引发错误。但是,您可以查看扩展 SPL ArrayObject,并在更新/重新声明属性时在其中抛出错误。

更新:类似的东西:

class MyStrictArray extends ArrayObject
{
    public function offsetSet($index, $value)
    {
        if ($this->offsetExists($index)) {
            trigger_error("Can't redeclare a property", E_USER_ERROR);
            return;
        }

        return parent::offsetSet($index, $value);
    }
 }

 // and to use it.
 $array = new MyStrictArray();
 $array['a'] = 'foo';
 $array['a'] = 'bar'; // triggers error
于 2012-12-12T10:34:34.110 回答