说来学习使用PHP也很久了,直到现在也没有一个能拿得出手的项目,实在惭愧.也纠结过自已是否真的不适合干这一行,或者说当初选择PHP就是错误的.因为有时觉得自已使用PHP实在是太没劲了,没技术含量,整个系统就是IF,ELSE,FOREACH,什么MVC,MTV,CCTV折开了还得写IF,ELSE (-_-!!,于是一直找一些高级的资料,但网上几乎没有.有也是什么C,JAVA之类了,PHP的基本都是初级,入门...只好客串一下别的编程语言.但到后头才发现,这些似乎在PHP中(或者说WEB中)都用不上,可能是自已理解差了,没办法只好考虑改用其它编程语言,或许现在还来得及 却在我快要放弃PHP时,无意间使用了Yii框架,可以说它的设计模式颠覆了我对PHP的感觉,WEB程序竟然可以设计成那样.这里题外推荐一下Yii.因为它真的很不错.
因为使用Yii的关系,也使我在开发之余有闲心来研究一下PHP,研究一下PHP程序.一直以来觉得PHP中什么算法都是浮云,我们要做的只是读出写入数据就基本OK.因为对高级技巧的渴望,我在想我的WEB程序中是否能更智能一些,而不是简单的读写数据.
我们都知道程序是有算法的,但对于初学者基本没用上,特别是自学者.对算法的概念通常都很模糊.这篇文章也就是想通过一个简单的应用来让新手了解一下算法的使用.当然我水平也不高,只能讲一下简单的.
首先是场景:有一个论坛,里面有一个热门指数的属性,用于表现这个论坛的热门程度.我们要来分析如何实现这个数值.
下面开始分析:首先是一个论坛的热门程度是以什么为基准的呢?是发帖量,于是最最简单的方式就是 热门指数 = 发帖总数.
当然我们这里肯定不用这个"最最简单的方法",实际使用中我们要考虑的还有一个时间问题,论坛开放了一年帖子总数100和开放了一天发帖总数100,孰优孰劣是显而易见的.那么 热门指数应该是等于 发帖总数/论坛开放天数 的。这样这个公式肯定是没问题了,但我们如果想要更精确地控制这个指数呢,比如我们定一个标准,每天发帖量为10的论坛其热门指数应该为1,发帖量20的则为2,以此类推。额...这样要实现就开始有点复杂了(当然,对数学牛人来说应该很简单,我不是牛人,只有苦想了)。
# int 最初的公式是 帖子总数/时间 ,我们要控制这个指数就要在“时间”上下手。以上面的条件 指数为1时发10帖每1天。定义这个指数
$hotIndex = 10;
# int 论坛建立时间,UNIX时间时间戳
# 用time()获取保存在数据表中的int字段
$timeCreate;
# int 帖子总数
$postNum;
# 因为使用time()取得的是以秒为单位的数值
# 1天就是 时间/(60*60*24)
# 上公式
# 帖子总数/(((当前时间-版块创建时间)/(60*60*24))*热门基数)
$hot = postNum/(((time()-$timeCreate)/(60*60*24))*$hotIndex);
这个问题算是解决了,但如果我还要更复杂一点,比如:当一个论坛建了很长时间没管理,某一时间创建者忽然想全心投入了,于是因为这个论坛是建了很长时间了的,他就得付出更多精力来发展才能使$hot提升上去,为了人性化,我们是不是得改一下公式?再比如一个很热门很热门的论坛,到后来这个$hot太大了,是不是该降低一下$hot增加的幅度呢?(有点像游戏中的升级系统),这就要给这个公式一个曲线.当然在这里,这个更复杂的我们就暂且不表了...
所以并不是语言本身没有挑战性,而是我们的系统和设计没有挑战性.
接下来我要继续修练去了,希望有一天我也能成为大牛.虽然我没有天赋,但我有勤于砖研的心态.即使我这个大牛是在10年或20年之后诞生也好.但在些之前先宣传一下我的Q.Q群吧,群号是227565443,这里不讨论IF,ELSE.还有忘记在后面加";"的问题,只讨论一个功能要去怎么实现,呵呵.还有打屁是必需的.
因为使用Yii的关系,也使我在开发之余有闲心来研究一下PHP,研究一下PHP程序.一直以来觉得PHP中什么算法都是浮云,我们要做的只是读出写入数据就基本OK.因为对高级技巧的渴望,我在想我的WEB程序中是否能更智能一些,而不是简单的读写数据.
我们都知道程序是有算法的,但对于初学者基本没用上,特别是自学者.对算法的概念通常都很模糊.这篇文章也就是想通过一个简单的应用来让新手了解一下算法的使用.当然我水平也不高,只能讲一下简单的.
首先是场景:有一个论坛,里面有一个热门指数的属性,用于表现这个论坛的热门程度.我们要来分析如何实现这个数值.
下面开始分析:首先是一个论坛的热门程度是以什么为基准的呢?是发帖量,于是最最简单的方式就是 热门指数 = 发帖总数.
当然我们这里肯定不用这个"最最简单的方法",实际使用中我们要考虑的还有一个时间问题,论坛开放了一年帖子总数100和开放了一天发帖总数100,孰优孰劣是显而易见的.那么 热门指数应该是等于 发帖总数/论坛开放天数 的。这样这个公式肯定是没问题了,但我们如果想要更精确地控制这个指数呢,比如我们定一个标准,每天发帖量为10的论坛其热门指数应该为1,发帖量20的则为2,以此类推。额...这样要实现就开始有点复杂了(当然,对数学牛人来说应该很简单,我不是牛人,只有苦想了)。
# int 最初的公式是 帖子总数/时间 ,我们要控制这个指数就要在“时间”上下手。以上面的条件 指数为1时发10帖每1天。定义这个指数
$hotIndex = 10;
# int 论坛建立时间,UNIX时间时间戳
# 用time()获取保存在数据表中的int字段
$timeCreate;
# int 帖子总数
$postNum;
# 因为使用time()取得的是以秒为单位的数值
# 1天就是 时间/(60*60*24)
# 上公式
# 帖子总数/(((当前时间-版块创建时间)/(60*60*24))*热门基数)
$hot = postNum/(((time()-$timeCreate)/(60*60*24))*$hotIndex);
这个问题算是解决了,但如果我还要更复杂一点,比如:当一个论坛建了很长时间没管理,某一时间创建者忽然想全心投入了,于是因为这个论坛是建了很长时间了的,他就得付出更多精力来发展才能使$hot提升上去,为了人性化,我们是不是得改一下公式?再比如一个很热门很热门的论坛,到后来这个$hot太大了,是不是该降低一下$hot增加的幅度呢?(有点像游戏中的升级系统),这就要给这个公式一个曲线.当然在这里,这个更复杂的我们就暂且不表了...
所以并不是语言本身没有挑战性,而是我们的系统和设计没有挑战性.
接下来我要继续修练去了,希望有一天我也能成为大牛.虽然我没有天赋,但我有勤于砖研的心态.即使我这个大牛是在10年或20年之后诞生也好.但在些之前先宣传一下我的Q.Q群吧,群号是227565443,这里不讨论IF,ELSE.还有忘记在后面加";"的问题,只讨论一个功能要去怎么实现,呵呵.还有打屁是必需的.



