所以...我正在测试某些东西,并注意到在运行此代码时:
$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个大写字母开头? 对我来说,那种“随机性”似乎很奇怪。
我想知道为什么会得到这个结果。
答案 0 :(得分:13)
array_rand
(自PHP 5.2.10起)不再改组它生成的随机键列表(您会注意到输出字符串全部按字母顺序排列,即字符与它们的顺序相同)在输入字符串中)。如果您不希望这种行为,请改用shuffle
和array_slice
:
$arr = str_split("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890", 1);
shuffle($arr);
echo implode('', array_slice($arr, 0, 16));
输出:
dU54f9wBjZbAKgCP