微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PHP中字符串错误的减量运算符?

如何解决PHP中字符串错误的减量运算符?

至少在我的PHP版本中,关于字符串的递增/递减运算符功能不一致。这是我的意思:

PHP > echo PHPversion();
7.4.11
PHP > $test = 'abc12';
PHP > // increment works as expected
PHP > echo(++$test);
abc13
PHP > echo(++$test);
abc14
PHP > echo(++$test);
abc15
PHP > // but decrement fails
PHP > echo(--$test);
abc15
PHP > echo(--$test);
abc15
PHP > echo(--$test);
abc15

这是预期的行为吗?我应该提交错误报告或其他内容吗?您知道解决方法吗?

编辑:提起bug#80212

解决方法

那是documented behaviour(强调我的意思):

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

,

这就是我最后要去的地方:

function decrement($str) {
  $matches = preg_split('/(\d+)\z/',$str,-1,PREG_SPLIT_DELIM_CAPTURE);
  @--$matches[1];
  return implode($matches);
}

不会称它为优雅,但我会称其为功能

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。