-1

我有这样的数据:

$aa ="msg_1";

我想在执行如下explode操作后在字符串末尾添加+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

还有一件事可能导致错误,您需要注意 - 因为您想添加两个数字,首先确保您转换$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 回答