Это должны уметь более менее адекватные IDE. Помнится Netbeans такое умел. В Phpstorm по дефолту вроде не работает, но это не точно. Опять же, зависит от контекста.
На сколько я помню, он был по дефолту включен в 8.x ветке. Когда переопределяешь переменную, он говорил к конкретному куску кода о том что есть переопределение. Я к сожалению не могу сказать как там сейчас с этим дела.
но это же вполне законное присваивание элементу по ключу, как гипотетический линтер должен отделять правомерные на ваш взгляд присваивания от неправомерных?
Тогда он будет давать такие ворнинги на каждое корректное переприсвоение. Обычно линтеры отлавливают повторное объявление потому что это действительно некорректное поведение скорее всего, а в большинстве языков это вообще в сам язык добавляют даже без линтеров.
Там выше человек правильно написал, проще сделать константой переменную, или как вариант не пользоваться ассоциативным массивом, а пользоваться какой-то другой иммутабельной структурой.
Ну и последний вариант просто погрепать исходники и посмотреть где идет переприсваивание, оно скорее всего где-то рядом.