有个关于字符串合并去重问题的可实现性疑惑?
问题如下:有一个字符串,用“。”分割,写一个程序。合并字符串中相同的项。
如字符串“大家好[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上也开了一个帖子,其中有个人的方法比我的要简单多了,代码我就不贴了,有需要的自行点击传送门