用什么方法处理效率较好 本帖最后由 free212 于 2011-11-16 16:34:53 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 $reg_zone = '/[\x80-\xff]+省([\x80-\xff]+市)?/';foreach ($list as $val) $str .= $val; //把列表连成字符串$rz = array();while ($count = preg_match($reg_zone, $str, $match)) {array_push(array($match[0], $count));str_replace($match[0], '', $str);}var_dump($rz); //结果 我out了,数组连接字符串,用implode()函数,不要用foreach 你这不是从数据库取得的数据嘛 用SQL 不就可以了?COUNT GROUP BY 直接 select count(*),address from table group by address 文件 的话用sscanf数据库 的话看楼上 是这个意思,可是因为数据库里的地址格式是包括运营商的,而我只需要统计到市就行了,所以不能仅group,mysql不知能不能切分地址。 在手册中找到一个函数似乎可行 SELECT SUBSTRING_INDEX('江苏省 电信',' ',1) select count(*) as aa,SUBSTRING_INDEX(address,' ',1) as bb from table group by bb;谢谢各位高见 上面有错,count方法不对,写了个效率更高的:function GuestCount($list) { $reg_zone = '/[\x80-\xff]+省([\x80-\xff]+市)?/'; $str = implode($list); $rz = array(); while (preg_match($reg_zone, $str, $match)) { $str = str_replace($match[0], '', $str, $count); array_push($rz, array($match[0], $count)); } return $rz;}//----------------- 测试 ----------------------+$list = array( '1 49.81.64.189 江苏省 电信', '2 116.24.72.197 广东省深圳市龙岗区 电信', '3 116.24.72.197 广东省深圳市龙岗区 电信', '4 123.150.183.102 贵州省贵阳市 联通', '5 180.186.75.3 北京市 时代互联', '6 123.232.213.180 山东省济南市 联通', '7 222.170.166.38 黑龙江省伊春市 电信ADSL', '8 49.81.64.189 江苏省 电信');foreach (GuestCount($list) as $row) { echo "$row[0]($row[1])<br>";}/*江苏省(2)广东省深圳市(2)贵州省贵阳市(1)山东省济南市(1)黑龙江省伊春市(1)*/ 我觉得底端的服务尽量少点逻辑比较好,最好都是ask -> answer的形式,便于维护 怎么让系统自动设置过期信息? 请问如何用php连接sqlserver2005? 请问怎样应用pear来删除mysql表结构的字段呢?在线等~~~急 如何使查询结果按相关性排序 phplib模版调用数组问题 排行榜实现的思路到底是怎样的? 高分:大侠小侠看过来,求救,也许你就是帮我解决难题的高手..~~~ 为什么我的session我自动清空? 在PHP里有什么函数可实现页面跳转 实现当用户刷新本页面时跳转到xxx.php页面的代码,有点问题,请指教... 发一个php memcache结合文件存储的类 html php位置问题
$reg_zone = '/[\x80-\xff]+省([\x80-\xff]+市)?/';
foreach ($list as $val) $str .= $val; //把列表连成字符串
$rz = array();
while ($count = preg_match($reg_zone, $str, $match)) {
array_push(array($match[0], $count));
str_replace($match[0], '', $str);
}var_dump($rz); //结果
数据库 的话看楼上
是这个意思,可是因为数据库里的地址格式是包括运营商的,而我只需要统计到市就行了,所以不能仅group,mysql不知能不能切分地址。
select count(*) as aa,SUBSTRING_INDEX(address,' ',1) as bb from table group by bb;谢谢各位高见
$reg_zone = '/[\x80-\xff]+省([\x80-\xff]+市)?/';
$str = implode($list);
$rz = array();
while (preg_match($reg_zone, $str, $match)) {
$str = str_replace($match[0], '', $str, $count);
array_push($rz, array($match[0], $count));
}
return $rz;
}//----------------- 测试 ----------------------+$list = array(
'1 49.81.64.189 江苏省 电信',
'2 116.24.72.197 广东省深圳市龙岗区 电信',
'3 116.24.72.197 广东省深圳市龙岗区 电信',
'4 123.150.183.102 贵州省贵阳市 联通',
'5 180.186.75.3 北京市 时代互联',
'6 123.232.213.180 山东省济南市 联通',
'7 222.170.166.38 黑龙江省伊春市 电信ADSL',
'8 49.81.64.189 江苏省 电信'
);foreach (GuestCount($list) as $row) {
echo "$row[0]($row[1])<br>";
}/*
江苏省(2)
广东省深圳市(2)
贵州省贵阳市(1)
山东省济南市(1)
黑龙江省伊春市(1)
*/