Можно ли получить предупреждение в следующем коде?
error_reporting(E_ALL); $s = array( 'a' => '1', 'a' => '1' ); var_export( $s );
Ваша единственная надежда (помимо учета самого себя) заключается в том, что ваш редактор достаточно умен, чтобы выделить опечатку. Этот снимок экрана из PHPStorm:
В этом случае вы не можете выбросить ошибку, используя стандартные массивы. Тем не менее, вы можете посмотреть расширение 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