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 に答える