Уведомление о смещении неинициализированной строки при генерации случайного GUID - PullRequest
0 голосов
/ 27 октября 2011

У меня есть код, который вызывает многократную ошибку в моем журнале ошибок, как я могу ее исправить?

public function generate_guid() {
        //you can change the length of the autogenerated guid here
        //i choose 4 because with 26 possible characters that still gives 456.976 possibilities, if you include numbers ( add 0123456789) to the possible characters you will get 1.679.616 combinations
        $length = 4;
         //charachters used for string generation
    $characters = 'abcdefghijklmnopqrstuvwxyz';
    $string = '';    
    for ($p = 0; $p < $length; $p++) {
    $string .= $characters[mt_rand(0, strlen($characters))]; <<-- this is line 92
}
return $string;
    }

1 Ответ

4 голосов
/ 27 октября 2011

Проблема в том, что mt_rand(0, strlen($characters)) будет генерировать числа вплоть до длины строки, но поскольку смещения строк начинаются с 0, максимальное смещение равно длине минус один.Поэтому правильным будет mt_rand(0, strlen($characters) - 1).

Кстати, я бы рекомендовал использовать массив символов, сгенерированный range('a', 'z') (чтобы вам не пришлось его печатать), и получить элемент, используя array_rand.

...