专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »PHP教程 » 面向函数:面向过程和函数的PHP实例 »正文

面向函数:面向过程和函数的PHP实例

来源: 发布时间:星期三, 2008年9月10日 浏览:96次 评论:0
说到面向过程和函数,我们也不得不提起PHP,PHP函数的丰富和强大,是我们一般Java和C++程序员所不能理解的,下面我们来看一个实际编程场景,并看PHP如何完美的进行解决。

编程场景:给定一个字符串数组,要求计算每个字符串出现的次数,并按照次数的多少排列,例如下面数组:
{\"北京\",\"上海\",\"天津\",\"北京\",\"重庆\",\"广州\",\"上海\",\"北京\",\"上海\",\"重庆\",\"北京\",\"天津\",\"上海\",\"北京\",\"天津\"}
要求得到如下的结果:

北京:5 上海:4 天津:3 重庆:2 广州:1

即返回一个哈西表,键为数组中的字符串,值为该字符串出现的次数,并且按照值顺序排列。

上面这个场景,实现的难度不大,使用各种语言都能够实现,例如Java、C++、Javascript等等,我先介绍一下PHP的一个实现方式:

<?php
$arr=array(\"北京\",\"上海\",\"天津\",\"北京\",\"重庆\",\"广州\",\"上海\",\"北京\",\"上海\",\"重庆\",\"北京\",\"天津\",\"上海\",\"北京\",\"天津\");
$arr=array_count_values($arr);
function compareIntValue($v1,$v2){
if($v1>$v2){
return 1;
}else if($v1==$v2){
return 0;
}else{
return -1;
}
}
uasort($arr,compareIntValue);
$arr=array_reverse($arr);
print_r($arr);
?>

输出结果:

Array ( [北京] => 5 [上海] => 4 [天津] => 3 [重庆] => 2 [广州] => 1 )

简单介绍一下上面用到的PHP的几个函数:

array_count_values —— 统计数组中所有的值出现的次数
uasort —— 使用用户自定义的比较函数对数组中的值进行排序并保持索引关联
array_reverse —— 返回一个单元顺序相反的数组

当然了我们用Java甚至是Javascript也能够实现该编程场景,但是感觉不是很流畅,Java由于过于看重类的作用以及花费太多的精力在企业应用和架构上面,使得其在基本数据结构以及数据结构扩展等方面做得不是很到位,而Javascript则由于在浏览器端过于强大,对数据结构方面做得也不太充分,而PHP则在数据结构及其辅助操作方面,有相当丰富的积累,这也着实令人钦佩,,www. 。

想当年CGI Perl流行的时候,PHP的出现给了人们莫大的惊喜,网站开发变得越来越便捷,而后JSP的出现,尤其是其后面J2EE的平台支持,使得基于Web模式的企业级服务的开发,成为了可能,再后来 .NET平台、LAMP平台相继出现,更是极大丰富了我们的视野,给了我们更为广阔的空间。然而经过这一系列的洗礼,我们不难发现,其实每一种语言甚至平台,都很难解决所有的问题,或者很好的解决大部分问题,就好像面OOP并不能解决所有的问题一样,而AOP的出现以及对POP的思考,则给了我们更多的反思。

如果本文没有解决您的问题,请进老妖怪开发者社区提问

相关文章

读者评论

  • 共0条 分0页

发表评论

  • 昵称:
  • 内容: