2012-04-24 38 views
2

我正在爲一個朋友的網站開發一個項目,該項目假設生成完全隨機的電話號碼以顯示在「假」評論板上。我認爲最好的辦法是讓我分別生成每一部分。所以3-3-4,但無論我做什麼,每當前面有0時,代碼都會將其切斷。下面是我的意思的例子:0的不是從數字值的前面剝去

http://www.shiningashes.net/Test.php

然而,這是我的代碼:

<?php 
for ($i = 0000; $i <= 9999; $i++) { 
echo $i; 
echo "<br>"; 
} 
?> 

如何獲得0的停止被裁切掉,因此0的顯示? 0001,0021,0123等?

+0

如果你的總整數大小爲4,你可以指望你得到的字符串是多久,在零添加的差異4。 – Ahatius 2012-04-24 08:54:33

回答

2

您可以使用str_pad

for ($i = 0; $i <= 9999; $i++) { 
    echo str_pad($i, 4, '0', STR_PAD_LEFT); 
    echo "<br>"; 
} 
+0

非常感謝! :D – dpg199200 2012-04-24 09:00:18

0

你需要讓你的變量的字符串,如果你想保持零。這將意味着使用引號,並且從不使用數字運算符。但既然你依賴於使用++就可以了,我建議下面的技巧:

<?php 
for ($i = 10000; $i <= 19999; $i++) { 
    $str=substr ($i , 0 , 4); 
    echo $i; 
    echo $str; 
    echo "<br>"; 
} 
?> 
+0

這是非常長的。有很多可以使用的內置函數,從printf/sprintf(請參閱上面的答案),money_format或str_pad。 – ExternalUse 2012-04-24 09:06:07

+0

我用上面發佈的str_pad方法去了。完美地滿足我需要的東西。感謝大家。 – dpg199200 2012-04-24 09:13:06

+0

說這是「長期」,是一個高度自以爲然的要求。最乾淨的代碼不是最短的。 – Peter 2012-04-25 09:10:23

2

您可以用printf來格式化輸出:

<?php 
for ($i = 0; $i <= 9999; $i++) { 
    printf("%04d<br>\n",$i); 
} 
?> 
0

您需要將您的整數轉換爲字符串打印時。

<?php 
for ($i = 0; $i <= 9999; $i++) { 
    printf("%04d<br />", $i); 
} 
?> 

查看printf/sprintf的文檔以獲取更多信息。 親切的問候, 斯特凡