2011-01-13 36 views
0

こんにちは私のような値にインクリメントコードを作成する必要があります。PHPで "al003651"のような値にインクリメントコードを作成するにはどうしたらいいですか?

al003651 - > al003652 - > al003653

または

m000390 - > m000391 - > m000392

。なお、 0の数はさまざまです。

ありがとう、 Celso。

+1

これは、簡単な文字列操作で行うには些細なことです。これまでどこにこだわっていますか? – Fanis

+1

この種の操作を必要とするアプリケーションは、おそらく設計が間違っている可能性があります。これは何のため?なぜ数字コードを使用しないのですか? – lonesomeday

答えて

1

数値の一部は、すべての9つのにアルファをインクリメントしているときは、接頭辞

$str = 'z91'; 

for ($i = 0; $i < 16; $i++) 
    echo $str++,'<br />'; 

の変更のためにトラップする必要がありますけれども、PHPはこれらの素晴らしいインクレメンタ

$str = 'al003651'; 

for ($i = 0; $i < 16; $i++) 
    echo $str++,'<br />'; 

echo '<hr />'; 

$str = 'm000390'; 

for ($i = 0; $i < 16; $i++) 
    echo $str++,'<br />'; 

を持っています接頭辞は変更されます

+0

私は信じません!!!素晴らしいです ! – celsowm

2
<?php 
$code = 'al003651'; 
preg_match("~([a-z]+)(\d+)~", $code, $results); 
$length = strlen($results[2]); 

//add one to the number 
$number = (int) $results[2]; 
$number += 1; 

//concat again 
$code = $results[1]; 

//attach zeros 
$diff = abs($length - strlen('' . $number)); 
$code .= str_repeat('0', $diff); 

//attach new code 
$code .= $number; 
echo $code; 
?> 
+0

+1しかし、その醜い 'for'ループの代わりに' str_repeat'を使うことをお勧めします;) – Qix

+0

それについて考えなかったのです –

関連する問題