Tôi cần phải truyền các hình đơn (1 đến 9) đến (01 đến 09). Tôi có thể nghĩ ra một cách nhưng nó to và xấu xí và cồng kềnh. Tôi chắc chắn phải có một số cách ngắn gọn. Bất kỳ Đề xuất nàoChữ số 0-số trong chuỗi
Trả lời
Trước hết, mô tả của bạn gây hiểu nhầm. Double
là loại dữ liệu dấu chấm động. Bạn có lẽ muốn để pad chữ số của bạn với số không đầu trong một chuỗi. Mã sau đây thực hiện:
$s = sprintf('%02d', $digit);
Để biết thêm thông tin, hãy tham khảo tài liệu của sprintf
.
công việc tốt. nó hoạt động –
'09' và' 08' không hoạt động trong PHP7 –
@HirenBhut Không, nó hoạt động. –
Ngoài ra còn có str_pad
<?php
$input = "Alien";
echo str_pad($input, 10); // produces "Alien "
echo str_pad($input, 10, "-=", STR_PAD_LEFT); // produces "-=-=-Alien"
echo str_pad($input, 10, "_", STR_PAD_BOTH); // produces "__Alien___"
echo str_pad($input, 6 , "___"); // produces "Alien_"
?>
Giải pháp sử dụng str_pad:
str_pad($digit,2,'0',STR_PAD_LEFT);
Benchmark trên php 5,3
quả str_pad: 0,286863088608
Res ult sprintf: 0,234171152115
Code:
$start = microtime(true);
for ($i=0;$i<100000;$i++) {
str_pad(9,2,'0',STR_PAD_LEFT);
str_pad(15,2,'0',STR_PAD_LEFT);
str_pad(100,2,'0',STR_PAD_LEFT);
}
$end = microtime(true);
echo "Result str_pad : ",($end-$start),"\n";
$start = microtime(true);
for ($i=0;$i<100000;$i++) {
sprintf("%02d", 9);
sprintf("%02d", 15);
sprintf("%02d", 100);
}
$end = microtime(true);
echo "Result sprintf : ",($end-$start),"\n";
"0$digit"
.. nếu bạn đã biết chữ số duy nhất của nó!
Bản sao có thể có của [Định dạng số bằng số 0 đứng đầu trong PHP] (http://stackoverflow.com/questions/1699958/formatting-a-number-with-leading-zeros-in-php) –