【问题标题】:Incrementing a string which contains an integer gets an error递增包含整数的字符串会出错
【发布时间】:2020-01-09 01:10:50
【问题描述】:

我有一个字符串,它的末尾包含一个整数。例如。

$data = "TN01Y00099";

我想做的是从字符串中获取整数,然后将其增加一次并将其保存回该字符串。 比如我想把前面的字符串增加为,

$data = "TN01Y00100";

我为此尝试了以下代码。

$data['kitNo'] = "TN01Y00099";
$KitNoInt = substr($data['kitNo'], 5);
$KitNoInt = (int)$KitNoInt;
$originalKitNo = $KitNoInt;
$kitno = ++$KitNoInt;
$kit1 = str_replace($originalKitNo, $kitno, $data['kitNo']);

但它会像这样添加整数。

$kit1 = TN01Y000100

谁能帮我解开这个谜。

【问题讨论】:

  • 字符串是否有固定长度?
  • 数字超过99999怎么办
  • @dparoli 未修复
  • 您在这里将99 替换为100,这样您当然会得到一个额外的数字。

标签: php arrays string laravel


【解决方案1】:

如果你只是想给数字加 1,那么 PHP 允许你 increment the original string 并且会为你调整它...

$data = "TN01Y00099";
$data++;
echo $data;

给...

TN01Y00100

【讨论】:

  • 哇!从来不知道。它还将变量保持为字符串类型。
  • 感谢您的宝贵帮助。我浪费了我 1 个小时的时间来研究这个。但你只是在一分钟内解决了我的问题。
【解决方案2】:

你可以使用

$data['kitNo'] = "TN01Y00099";
    $KitNoInt = substr($data['kitNo'], 5);
    $KitNoInt = (int)$KitNoInt;
    $originalKitNo = str_pad($KitNoInt, 5, '0', STR_PAD_LEFT);
    $kitno = $KitNoInt + 1 ;
    $temp  = str_pad($kitno, 5, '0', STR_PAD_LEFT);
    $kit1 = str_replace($originalKitNo, $temp, $data['kitNo']);
    return $kit1;

【讨论】:

  • 我找到了另一个由@nigel 回答的简单解决方案。无论如何,感谢您的努力。
猜你喜欢
  • 2021-05-29
  • 2017-05-03
  • 1970-01-01
  • 2015-10-06
  • 1970-01-01
  • 2018-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多