-1

私は次のようなデータを持っています:

$aa ="msg_1";

次のような爆発操作を行った後、文字列の最後に +1 を追加したい:

$nwMsg =explode("_",$aa);
    $inMsg =number_format($nwMsg[1])+1;
    $finStr =$nwMsg[0].'_'.$inMsg;

この後、もう一度文字列を形成して同じプロセスを繰り返したいのですが、その後まで増加していて、増加して"10"いません...

4

8 に答える 8

3

+1呼び出しの後ではなく、呼び出しの内側に配置する必要がありnumber_formatます。

$nwMsg[1]編集:数値として扱いたいだけの場合+は、数値演算子なので、それに1を加えるだけで問題なく機能します。

于 2013-02-06T12:55:50.283 に答える
1
$nwMsg =explode("_",$aa);
$inMsg =number_format($nwMsg[1] +1) ;
$finStr =$nwMsg[0].'_'.$inMsg;
于 2013-02-06T12:56:25.860 に答える
1
$aa= "msg_1";
$new_string= explode("_", $aa);
$new_aa= $new_string[0] ."10";
于 2013-02-06T12:57:48.793 に答える
1
function add_one($string) {
    preg_match_all("/[a-zA-Z]+_\d+/", $string, $matches);
    $elements = $matches[0];
    $last = $elements[count($elements)-1];
    $components = explode("_", $last);
    $newnum = $components[1] + 1;
    return $string . $components[0] . "_" . $newnum;
}
echo add_one("msg_1"); // prints "msg_1msg_2"
echo add_one("msg_1msg_2msg_3msg_4msg_5msg_6msg_7msg_8msg_9"); // prints "msg_1msg_2msg_3msg_4msg_5msg_6msg_7msg_8msg_9msg_10"
于 2013-02-06T12:59:52.327 に答える
0

これは間違っています

$inMsg =number_format($nwMsg[1])+1;

これはそれが行われる方法です

$inMsg =number_format($nwMsg[1]+1);
于 2013-02-06T12:57:57.443 に答える
0
$nwMsg =explode("_",$aa);
$inMsg =$nwMsg[1] +1 ;
$finStr =$nwMsg[0].'_'.$inMsg;

number_format を使用しなくても結果が得られます。

于 2013-02-06T12:58:11.537 に答える
0

もう 1 つ、エラーが発生する可能性があり、注意が必要です。2 つの数値を加算する必要があるため、まず$nwMsg[1]数値 (整数または浮動小数点数、場合によって異なります) に変換する必要があります。

$nwMsg =explode("_",$aa);
    $inMsg =number_format((int)$nwMsg[1]+1);
    $finStr =$nwMsg[0].'_'.$inMsg;
于 2013-02-06T12:58:43.557 に答える
0

別の解決策はどうですか:

function add($matches) {
    return ++$matches[0];
}

$new = preg_replace_callback("(\d+)", "add", $aa);
于 2013-02-06T13:01:19.390 に答える