массивы — почему PHP выбирает случайные значения, как это?

Итак … Я что-то тестировал и заметил, что когда я запускаю этот код:

$arr = str_split("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890", 1);
print_r(implode(array_rand(array_flip($arr), 16)));

Выход

Refresh 1: BDFIJKPTVkl12789
Refresh 2: HIJKMQWYdfmorsw3
Refresh 3: FGHMNRVYfhknouw5
Refresh 4: AFIJKRSVeiuwx579
Refresh 5: DJORYZcgijlpqry1
Refresh 6: EISWbhjmoqr45689
Refresh 7: CDEFOTXdhkloqr27
Refresh 8: AEFIKLNORSknx349
Refresh 9: DEFHJMTVZcgpstz0
Refresh 10: CLQTZbefhnpq1279

Почему вывод начинается с 1 до 5 заглавных букв?
Эта «случайность» кажется мне странной.

Я хотел бы знать, почему я получаю этот результат.

7

Решение

array_rand (начиная с PHP 5.2.10) больше не тасует список генерируемых им случайных ключей (вы заметите, что все ваши выходные строки расположены в алфавитном порядке, то есть символы расположены в том же порядке, что и во входной строке). Если вы не хотите такого поведения, используйте shuffle а также array_slice вместо:

$arr = str_split("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890", 1);
shuffle($arr);
echo implode('', array_slice($arr, 0, 16));

Выход:

dU54f9wBjZbAKgCP

Демо на 3v4l.org

9

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]