Диаграмма классов UML и общие сведения

Если вы имеете дело со строками, имеющими несколько частей, то это не так просто решить с помощью регулярного выражения, поскольку у вас могут быть числа, переполненные из одной числовой части в другую.

Например, если у вас есть число INV00-10-99, которое должно увеличиваться до INV00-11-00.

В итоге я получил следующее:

for ($i = strlen($string) - 1; $i >= 0; $i--) {
  if (is_numeric($string[$i])) {
    $most_significant_number = $i;
    if ($string[$i] < 9) {
      $string[$i] = $string[$i] + 1;
      break;
    }
    // The number was a 9, set it to zero and continue.
    $string[$i] = 0;
  }
}

// If the most significant number was set to a zero it has overflowed so we
// need to prefix it with a '1'.
if ($string[$most_significant_number] === '0') {
  $string = substr_replace($string, '1', $most_significant_number, 0);
}
34
задан stakx 24 January 2011 в 22:13
поделиться