我有这样的数据:
$aa ="msg_1";
我想在执行如下explode操作后在字符串末尾添加+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 的结果。
还有一件事可能导致错误,您需要注意 - 因为您想添加两个数字,首先确保您转换$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);