在PHP数组定义中显示重复的键警告

时间:2012-12-12 10:25:01

标签: php

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

error_reporting(E_ALL);

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

var_export( $s );

2 个答案:

答案 0 :(得分:1)

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

enter image description here

答案 1 :(得分: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