0

我在减少字符串 ID 时遇到问题。情况是这样的:

// given $row[0]['orderid'] = "ORD00389" (varchar)
$nextID = $row[0]['orderid'];
$prevID = $row[0]['orderid'];
$nextID++; // echo 'ORD00390'
$prevID--; // echo 'ORD00388'

到目前为止,我学到的是这段可爱的段落:

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

有没有有效的方法(内置函数)来减少 PHP 中的字符串?

4

1 回答 1

8

如果每次可以摆脱 ORD 时它都以 ORD 结尾,则减 1,然后将其重新组合在一起。

$id_num = intval( str_replace( 'ORD', '', $str ) );
$nextID = 'ORD' . ($id_num+1);
$prevID = 'ORD' . ($id_num-1);

如果不是每次都以 ORD 开头,则可以替换所有非数字

$id_num = intval( preg_replace( '~\D~', '', $str ) );
于 2012-06-01T01:49:55.360 回答