2015-02-18 2 views
0

Я ищу, чтобы увеличить число после определенного письма.Как увеличить число после буквы в PHP

У меня есть список собственных идентификаторов, и я хотел бы увеличить его, не записывая его вручную каждый раз, когда добавляю новый идентификатор.

$ids = array('303.L1', '303.L2', '303.L3', '303.L4'); 

поэтому я использую функцию END() для извлечения последнего id из этого массива.

Это то, что я пробовал, но я не могу получить результат.

 $i = 0; 
     while($i <= count($ids)){ 

      $i++; 
      $new_increment_id = 1; 
      $final_increment = end($last_id) + $new_increment_id; 

     } 
     echo $final_increment; 

Новый метод, но он добавляет мне двойную точку между числом и буквой.

  $i = 0; 
      while($i <= count($ids)){ 
      $i++; 
      $chars = preg_split("/[0-9]+/", end($ids)); 
      $nums = preg_split("/[a-zA-Z]+/", end($ids)); 

      $increment = $nums[1] + 1; 
      $final_increment = $nums[0].$chars[1].$increment; 
     } 

     //i will use this id to be inserted to database as id: 
     echo $final_increment; 

Есть ли другой способ увеличить последнее число после L?

Любая помощь приветствуется.

+0

не могли бы вы просто использовать ключ массива (+1, если вы не хотите, чтобы начать с 0)? –

+0

Извините, было ошибкой объявить 1 переменной $ i, я изменю ее на 0. Thx – ndAR

+0

выполняет какую-либо часть перед var, которая должна быть постоянно изменена? есть ли что-то более динамичное? – serjoscha

ответ

0

Если вы не хотите, предопределенный список, но вы хотите определенное количество идентификаторов возвращается в переменной $ IdS, можно использовать следующий код

<?php 

$i    = 0; 
$number_of_ids = 4; 
$id_prefix = "303.L"; 
$ids   = array(); 

while($i < $number_of_ids){ 
    $ids[] = $id_prefix . (++$i); // adds prefix and number to array ids. 
} 

var_dump($ids); 
// will output '303.L1', '303.L2', '303.L3', '303.L4' 
?> 
0

Я немного смущен, потому что вы говорите «не писать вручную». Но я думаю, что у меня есть решение:

$ids = array('303.L1', '303.L2', '303.L3', '303.L4'); 
$i = 0; 
while($i <= count($ids)){ 

    ++$i; 
    //Adding a new item to that array 
    $ids[] = "303.L" . $i; 
} 

Это увеличит только, что последнее число, начиная с нуля. Если бы вы хотели продолжить работу, когда вы остановились, это тоже было бы просто. Просто возьмите $i = 0; и заменить:

//Grab last item in array 
$current_index = $ids[count($ids) - 1]; 
//Separates the string (i.e. '303.L1') into an array of ['303', '1'] 
$exploded_id = explode('.L', $current_index); 
//Then we just grab the second item in the array (index 1) 
$i = $exploded_id[1]; 
+0

Да, пишите вручную, я имею в виду, записываю его на вход каждый раз, когда я вставляю новый идентификатор. – ndAR

+0

Я отредактировал свой вопрос и добавил новый способ увеличить последнее число после «L», но проблема в том, что у меня двойная точка. в конце – ndAR

+0

Все еще запутался. Но я верю, что этот ответ автоматизирует процесс для вас. Он автоматически увеличит этот идентификатор, и вам никогда не придется беспокоиться об этом. –

Смежные вопросы