Nếu tôi có một biến trong PHP có chứa 0001
và tôi thêm 1 vào nó, kết quả là 2 thay vì 0002
.Trong PHP, làm cách nào để thêm vào chuỗi số không đệm và giữ nguyên phần đệm bằng không?
Làm cách nào để giải quyết vấn đề này?
Nếu tôi có một biến trong PHP có chứa 0001
và tôi thêm 1 vào nó, kết quả là 2 thay vì 0002
.Trong PHP, làm cách nào để thêm vào chuỗi số không đệm và giữ nguyên phần đệm bằng không?
Làm cách nào để giải quyết vấn đề này?
$foo = sprintf('%04d', $foo + 1);
Một tùy chọn khác là chức năng str_pad().
$text = str_pad($text, 4, '0', STR_PAD_LEFT);
Có thể sẽ giúp bạn hiểu các loại dữ liệu PHP và cách chúng bị ảnh hưởng khi bạn hoạt động với các biến khác nhau. Bạn nói rằng bạn có "một biến trong PHP nói 0001", nhưng kiểu đó là biến nào? Có thể là một chuỗi, "0001", vì một số nguyên không thể có giá trị đó (nó chỉ là 1). Vì vậy, khi bạn làm điều này:
echo ("0001" + 1);
... các nhà điều hành +
nói, "Hm, đó là một chuỗi và một số nguyên Tôi không biết làm thế nào để thêm một chuỗi và một int nhưng tôi biết làm thế nào.. để chuyển đổi một chuỗi INTO một int, và sau đó thêm hai int với nhau, vì vậy hãy để tôi làm điều đó, "và sau đó nó chuyển đổi" 0001 "thành 1. Tại sao? Bởi vì các quy tắc PHP để chuyển đổi một chuỗi thành một số nguyên nói rằng bất kỳ số lượng zero hàng đầu trong chuỗi được loại bỏ. Điều này có nghĩa là chuỗi "0001" trở thành 1.
Sau đó, +
nói, "Này, tôi biết cách thêm 1 và 1. Đó là 2!" và đầu ra của tuyên bố đó là 2.
Bạn không giải quyết được vấn đề, nhưng được giải thích một cách độc đáo. :) – DanMan
<?php
#how many chars will be in the string
$fill = 6;
#the number
$number = 56;
#with str_pad function the zeros will be added
echo str_pad($number, $fill, '0', STR_PAD_LEFT);
// The result: 000056
?>
Cảm ơn, đã hoạt động hoàn hảo. – Ryan