附加到字符串的开头直到length = x

时间:2011-10-11 23:55:54

标签: php

我正在尝试编写一个循环,将一个数字附加到字符串的开头,直到它长达15个字符。我错过了什么?

$i = rand(1,9);
while (strlen($fileNameNS > 15)){
    $file13 = $i . $i . $fileNameNS;
}
$i++;

5 个答案:

答案 0 :(得分:7)

在循环的每次迭代中,您修改$file13,但您的循环只查看$fileNameNS,它永远不会改变!因为它永远不会改变,如果循环条件最初为真,它将永远为真,永远不会退出。

也许你的意思是:

$fileNameNS = $i . $i . $fileNameNS;

你的情况也有两种混淆。

  1. 当长度大于预期长度时,你继续,当你应该继续长度小于预期长度时。
  2. 当您应将比较应用于strlen的值时,您正在将$fileNameNS > 15应用于比较strlen($fileNameNS)
  3. while(strlen($fileNameNS) < 15) {
    

    请注意,因为您一次添加$i的两个副本,您的最终长度可能是15或16.如果这不是您想要的,那么您应该是这样:

    $fileNameNS = $i . $fileNameNS;
    

    在循环结束后,使用$i递增$i++,因此在循环内,$i的值永远不会改变。如果你的意思是每次迭代增加$i,那么每次都要加上不同的数字,你需要在循环内向上移动一行。但是,如果你这样做,那么$i可能会超过一位数,再次提高了最终长度为16的可能性。

答案 1 :(得分:3)

已经存在一个功能:

http://php.net/manual/en/function.str-pad.php

正如我在你的循环中看到的那样,每次都不需要兰特数,所以str_pad很合适。

答案 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++;
}