Синтаксис массива в строке: Неинициализированная ошибка смещения строки

Я получаю унифицированное смещение строки в следующем коде, который был опубликован онлайн:

function generateKey() { $length = 15; $characters = '0123456789abcdefghijklmnopqrstuvwxyz'; $string = ''; for ($p = 0; $p < $length; $p++) { $string .= $characters[mt_rand(0, strlen($characters))]; } return $string; } 

Это из-за $ characters [] применяется к строке? Я не полностью понимаю, что такое ошибка, но как я могу добиться такого же эффекта и обойти это (сейчас он работает нормально, просто выдает ошибку)?