【发布时间】:2014-01-15 04:32:02
【问题描述】:
我需要输出一个包含 10 个字母数字/下划线字符的随机字符串,其中第一个不能是数字。我的代码如下:
$arr = array_merge(range("a", "z"), range("A", "Z"), array("_"));
$name = array_rand($arr);
$arr = array_merge($arr, range(0, 9));
for($i = 1; $i < 10; $i++)
{
$name .= array_rand($arr);
}
echo $name;
但奇怪的是,输出总是类似于3329323960047113937 或933255318725381013 或48212116303047152448。为什么它超过十个字符,为什么它以数字开头(尽管当我启动变量$name 时$arr 中没有数字)?我应该使用foreach 而不是for 循环吗?或者我应该使用array_rand()以外的其他功能吗?我只是 PHP 的初学者,很抱歉这个愚蠢的问题。并提前感谢大家。
【问题讨论】:
-
foreach和for循环不会对输出产生影响。它们只是不同的循环流。此外,array_ran()返回数组键,而不是值。
标签: php arrays for-loop random