Как создать код приращения к значению типа «al003651» в PHP? - PullRequest
0 голосов
/ 13 января 2011

Привет, мне нужно создать код приращения для таких значений, как:

al003651 -> al003652 -> al003653

или

m000390 -> m000391 -> m000392

обратите внимание, что число нулей может варьироваться ...

Спасибо, Celso.

Ответы [ 2 ]

2 голосов
/ 13 января 2011
<?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;
?>
1 голос
/ 14 января 2011

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 />';

Хотя вам нужно будет перехватить изменение префикса

$str = 'z91';

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

Когда числовая часть увеличивается до всех 9, альфапрефикс изменится

...