2012-05-26 32 views
11

Tôi cần một đề xuất về chức năng cho bộ đếm php. Có chức năng nào để có số có 5 chữ số là 00001 hay 00123… số này không được ngẫu nhiên nhưng phải tăng giá trị của trường trước đó.Số gia tăng bắt đầu từ 0000 trong php

Nếu một số là $ n = '00001', có một hàm tăng số 00002 và không phải là 2?

Cảm ơn F.

+1

Tại sao không chỉ đệm nó bằng số 0 đứng đầu? – j08691

+0

như @ j08691 đề xuất sử dụng một int, và sau đó pad khi bạn cần để hiển thị nó ở định dạng này. –

+0

... và nếu bạn đang bắt đầu bằng một chuỗi đã có số 0 đứng đầu, bạn có thể thực hiện '$ new = str_pad (ltrim ($ cũ, '0') + 1, 5, '0', STR_PAD_LEFT);' - lưu ý rằng việc chuyển đổi một chuỗi trực tiếp thành một số nguyên nếu nó có số không đứng đầu có thể không tạo ra kết quả bạn mong đợi, nó có thể được coi là một bát phân. Đừng đánh giá thấp toán tử tăng dần '++' của PHP, nó khá thông minh và thực sự có thể đối phó với các chữ cái cũng như số, như [ví dụ này] (http://codepad.org/joxh9qoR) – DaveRandom

Trả lời

26
$n2 = str_pad($n + 1, 5, 0, STR_PAD_LEFT); 

Sử dụng str_pad() bằng cách thêm 0 s (thứ ba tham số) bên trái (thứ tư tham số) của số cũ $n tăng thêm 1 (tham số đầu tiên) cho đến khi chiều dài là 5 (thông số thứ hai).

+0

chính xác những gì tôi cần !!! Cảm ơn! – user1103633

2

Bạn cần có chức năng str_pad() để thêm số 0 đứng đầu vào chỉ mục của bạn.

$new_index = str_pad($index, 5, "0", STR_PAD_LEFT); 

đâu $index index incrementing của bạn trong vòng tròn, $new_index là chỉ số của bạn với hàng đầu zero.

3
$number = 1; 
$number++; 
echo str_pad($number, 5, "0", STR_PAD_LEFT); //00002 
4

Để thay thế, trong trường hợp bạn quan tâm, bạn có thể sử dụng sprintf để đệm số này với số 0 lên đến một số nhất định khá dễ dàng.

$numbers = array(0,1,11,111,1111,11111,11111); 
$padded = array(); 
foreach($numbers as $num) 
    $padded[] = sprintf('%1$05d', ++$num); 

print_r($padded); 

PHP hầu như luôn có nhiều cách để thực hiện tương tự. :)

Các vấn đề liên quan