【问题标题】:PHP Increase string valuePHP增加字符串值
【发布时间】:2014-01-26 13:05:09
【问题描述】:

我遇到了一些增加字符串值的问题,例如:

$string = "someString_1";

我需要价值somestring_2。当然我可以使用this之类的东西。 但是我试图找到另一种方法,结果我发现在我的情况下它就足够了 $string++;

$string++;
echo $string; //someString_2

很高兴我只有一串代码。但: Queston,is this correct way, or is there more better variants?(条件是我的字符串末尾总是有整数)

以及为什么当整数在第一个位置时它不起作用。例如,如果我们制作:

echo '1string' + '2string';// 结果 3. 当我们想要进行一些数学运算时,这就是 PHP 处理字符串的方式

【问题讨论】:

  • 当你有$string = "someString_9"; $string++; echo $string;时会有一些问题
  • stackoverflow.com/questions/8885440/… -- 递增数字字符串有效,但不是正确的代码。正则表达式是更好的解决方案
  • @马克贝克。嗯,我只是在意。我应该把 09 设置为 10,这不是个好主意(
  • 但是如果你设置someString_09,当你到达someString_99时会发生什么......字符串递增在适当的情况下非常有用,但确实有其局限性
  • 完全同意,项目范围为0-9,但谁知道以后会怎样..

标签: php


【解决方案1】:

你可以试试这个正则表达式。这个 sn-p 有效,它给了我someString_2 的结果

 $string = "someString_1";
 function increment($matches) {
   return ++$matches[1];
 }

echo $string =  preg_replace_callback( "|(\d+)|", "increment", $string);

【讨论】:

  • 也许可以通过使用匿名函数来改进此响应。我不喜欢创建一个函数,然后只从一个地方调用它(因为以后可能我删除了 preg_replace_callback() 并忘记了该函数,然后其他人想知道为什么存在增量函数)。
【解决方案2】:

php.net上有说明http://www.php.net/manual/en/language.operators.increment.php

在处理字符变量而不是 C 的算术运算时,PHP 遵循 Perl 的约定。例如,在 PHP 和 Perl 中 $a = 'Z'; $a++;将 $a 变成 'AA',而在 C a = 'Z';一个++;将 a 转换为 '['('Z' 的 ASCII 值为 90,'[' 的 ASCII 值为 91)。请注意,字符变量可以递增但不能递减,即使如此,也仅支持纯 ASCII 字母和数字(a-z、A-Z 和 0-9)。其他字符变量自增/自减无效,原字符串不变。

【讨论】:

    【解决方案3】:

    您的解决方案可能有效,但想象一下,有人必须在一段时间后修改您的代码。如果你在某处看到$string++,你会猜(没有任何研究)它的作用吗?即使它有效,在我看来,创建一个可以满足您需要的功能并且有一个名称来明确它的作用要好得多。

    【讨论】:

      猜你喜欢
      • 2021-07-17
      • 1970-01-01
      • 2013-10-09
      • 1970-01-01
      • 1970-01-01
      • 2012-11-06
      • 2013-01-24
      • 1970-01-01
      • 2013-05-12
      相关资源
      最近更新 更多