Увеличение на одно значение не работает при использовании большой длины цифры? - PullRequest
0 голосов
/ 20 ноября 2018

В настоящее время я пытаюсь увеличить значение на единицу, но не работаю, принимая большую длину цифры.

Например ..

Прямо сейчас st_id хранится в базе данных, как G4KZ00000001, теперь то, что я хочу, когда он вызывается во второй раз, тогда значение будет увеличено на 1, так что тогда будет G4KZ00000002, G4KZ00000003 и т.д ..

Ниже мой код ..

Значение получено из БД.

$lastStconId =$last_api_record['st_consignment_id'];

Тогда используйте следующее условие

if(empty($lastStconId)) {

$consignment_no = 'G4KZ00000001';

}else
{

$dataid = $last_api_record['st_consignment_id'];
$con =    str_replace("G4KZ", "", $dataid);


echo $consignment_no = $con+1; // dynamic
echo $consignment_no = 'G4KZ'.$consignment_no;
}

Когда я печатаю $consignment_no, это всегда возвращает значение приращения, но я хочу его с полной строкой G4KZ00000002.

Ответы [ 2 ]

0 голосов
/ 20 ноября 2018

Вам вообще не нужно удалять и повторно добавлять префикс G4KZ - вы можете просто увеличивать строки в PHP.Это также позволяет избежать проблемы, возникающей при удалении отступа, поскольку обрабатывает всю строку как операнд.

$str = 'G4KZ00000001';

echo ++$str;

G4KZ00000002

См. https://3v4l.org/nE8X9 для демонстрации с еще несколькими итерациями.

0 голосов
/ 20 ноября 2018

Проблема в том, что когда вы увеличиваете $consignment_no на '00000001', вы получаете 2, так как это числовое значение.Чтобы вернуться к полной длине, вам нужно добавить нули к длине исходного числа.Я использую str_pad() с левым отступом с 0 ...

$consignment_no = 'G4KZ'.str_pad($consignment_no, strlen($con), "0", STR_PAD_LEFT);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...