我正在尝试编写一个循环,将一个数字附加到字符串的开头,直到它长达15个字符。我错过了什么?
$i = rand(1,9);
while (strlen($fileNameNS > 15)){
$file13 = $i . $i . $fileNameNS;
}
$i++;
答案 0 :(得分:7)
在循环的每次迭代中,您修改$file13
,但您的循环只查看$fileNameNS
,它永远不会改变!因为它永远不会改变,如果循环条件最初为真,它将永远为真,永远不会退出。
也许你的意思是:
$fileNameNS = $i . $i . $fileNameNS;
你的情况也有两种混淆。
strlen
的值时,您正在将$fileNameNS > 15
应用于比较strlen($fileNameNS)
。while(strlen($fileNameNS) < 15) {
请注意,因为您一次添加$i
的两个副本,您的最终长度可能是15或16.如果这不是您想要的,那么您应该是这样:
$fileNameNS = $i . $fileNameNS;
在循环结束后,使用$i
递增$i++
,因此在循环内,$i
的值永远不会改变。如果你的意思是每次迭代增加$i
,那么每次都要加上不同的数字,你需要在循环内向上移动一行。但是,如果你这样做,那么$i
可能会超过一位数,再次提高了最终长度为16的可能性。
答案 1 :(得分:3)
答案 2 :(得分:0)
你的while语句也不正确。
while (strlen($fileNameNS) < 15)
你希望它在strlen小于15时行动
您也不需要在循环外增加$i
。实际上可能想要在循环中移动随机数生成器。让它成为随机的数字串。
答案 3 :(得分:0)
for ($i = 0, $str = ''; $i < 15; $i++) {
$str .= rand(1, 9);
}
答案 4 :(得分:-1)
$i = rand(1,9);
$file13 = $fileNameNS;
while (strlen($file13) <= 15){
$file13 = $i . $i . $fileNameNS;
$i++;
}