私は次のようなデータを持っています:
$aa ="msg_1";
次のような爆発操作を行った後、文字列の最後に +1 を追加したい:
$nwMsg =explode("_",$aa);
$inMsg =number_format($nwMsg[1])+1;
$finStr =$nwMsg[0].'_'.$inMsg;
この後、もう一度文字列を形成して同じプロセスを繰り返したいのですが、その後まで増加していて、増加して"10"
いません...
+1
呼び出しの後ではなく、呼び出しの内側に配置する必要がありnumber_format
ます。
$nwMsg[1]
編集:数値として扱いたいだけの場合+
は、数値演算子なので、それに1を加えるだけで問題なく機能します。
$nwMsg =explode("_",$aa);
$inMsg =number_format($nwMsg[1] +1) ;
$finStr =$nwMsg[0].'_'.$inMsg;
$aa= "msg_1";
$new_string= explode("_", $aa);
$new_aa= $new_string[0] ."10";
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"
これは間違っています
$inMsg =number_format($nwMsg[1])+1;
これはそれが行われる方法です
$inMsg =number_format($nwMsg[1]+1);
$nwMsg =explode("_",$aa);
$inMsg =$nwMsg[1] +1 ;
$finStr =$nwMsg[0].'_'.$inMsg;
number_format を使用しなくても結果が得られます。
もう 1 つ、エラーが発生する可能性があり、注意が必要です。2 つの数値を加算する必要があるため、まず$nwMsg[1]
数値 (整数または浮動小数点数、場合によって異なります) に変換する必要があります。
$nwMsg =explode("_",$aa);
$inMsg =number_format((int)$nwMsg[1]+1);
$finStr =$nwMsg[0].'_'.$inMsg;
別の解決策はどうですか:
function add($matches) {
return ++$matches[0];
}
$new = preg_replace_callback("(\d+)", "add", $aa);