有个关于字符串合并去重问题的可实现性疑惑?
问题如下:有一个字符串,用“。”分割,写一个程序。合并字符串中相同的项。
如字符串“大家好[81]。你是谁[3]。大家好[3]。老师好[12]。上午好。上午好[12]。”,
合并后为"大家好[84]。你是谁[3]。老师好[12]。上午好[13]。"
<?php> $str = "大家好[81]。你是谁[3]。大家好[3]。老师好[12]。上午好。上午好[12]。"; $arr = explode ( "。", $str ); //以"。"为分隔符,存储到数组$arr; foreach ( $arr as $key => $values ) { // 遍历$arr数组 parse_str ( $values, $output ); //把查询字符串解析到变量中 foreach ( $output as $key => $values ) { // 遍历$output数组 其中$values是数组形式存储 if (empty ( $values )) { //对于没有解析到空值,进行手动赋值 $values [1] = ""; } foreach ( $values as $k => $values ) { //将$values数组中的键值存储到$tmp2数组中 $tmp2 [] = $k; } $tmp [] = $key; //将output数组中的键值存储到$tmp数组中 } } foreach ( $tmp as $key => $values ) { // 遍历$tmp数组 $values为字符串 $a = array_keys ( $tmp, $values ); // 返回重复值的键名 以数组形式返回 $b = array(); foreach ( $a as $v ) { //遍历$a数组 通过数组$a中的值将$tmp2中与其相关的值存储到$b数组中 $b [] += $tmp2 [$v]; } $re[$values] = array_sum($b); //$re数组中的值为相同字符串后面值的和 } foreach ($re as $key => $values){ //将结果以固定的结构输出 echo $key."[".$values."]"."。"; } <?>本人也在csdn上也开了一个帖子,其中有个人的方法比我的要简单多了,代码我就不贴了,有需要的自行点击传送门