摘要: array_slice和array_splice函数是用在取出数组的一段切片,array_splice还有用新的切片替换原删除切片位置的功能。类似javascript中的Array.prototype.splice和Array.prototype.slice方法。 阅读全文
posted @ 2016-06-08 14:33 hoohack 阅读(983) 评论(1) 推荐(3) 编辑
摘要: 字符串的操作函数中,字符串的大小写转换也算是比较常用的函数,其底层实现也比较简单,下面来一探究竟。 阅读全文
posted @ 2016-06-02 16:40 hoohack 阅读(570) 评论(0) 推荐(0) 编辑
摘要: 在PHP编程中,在遍历数组的时候经常需要先计算数组的长度作为循环结束的判断条件,而在PHP里面对数组的操作是很频繁的,因此count也算是一个常用函数,下面研究一下count函数的具体实现。 阅读全文
posted @ 2016-05-31 13:43 hoohack 阅读(609) 评论(2) 推荐(4) 编辑
摘要: 上篇文章介绍了PHP添加元素到数组的函数,那么当然有从数组中删除元素。array_pop和array_shift只从数组的头或尾删除一个元素。经过阅读源码,发现这两个函数的实现都是调用了同一个函数--_phpi_pop来实现从数组中删除一个数组元素的功能。因此解读时将这两个函数一并讲了。 阅读全文
posted @ 2016-05-30 08:05 hoohack 阅读(687) 评论(1) 推荐(3) 编辑
摘要: 在PHP中,在数组中添加元素也是一种很常用的操作,分别有在数组尾部和头部添加元素,看看PHP内部是如何实现数组插入的操作。 阅读全文
posted @ 2016-05-27 11:55 hoohack 阅读(855) 评论(1) 推荐(4) 编辑
摘要: 近日被问到PHP中empty和isset函数时怎么判断变量的,刚开始我是一脸懵逼的,因为我自己也只是一知半解,为了弄懂其真正的原理,赶紧翻开源码研究研究。经过分析可发现两个函数调用的都是同一个函数,因此本文将对两个函数一起分析。 阅读全文
posted @ 2016-05-26 11:27 hoohack 阅读(1154) 评论(4) 推荐(9) 编辑
摘要: trim系列函数是用于去除字符串中首尾的空格或其他字符。ltrim函数只去除掉字符串首部的字符,rtrim函数只去除字符串尾部的字符。 阅读全文
posted @ 2016-05-24 12:02 hoohack 阅读(774) 评论(1) 推荐(6) 编辑
摘要: explode和implode函数主要用作字符串和数组间转换的操作,比如获取一段参数后根据某个字符分割字符串,或者将一个数组的结果使用一个字符合并成一个字符串输出。在PHP中经常会用到这两个函数,因此有必要了解一下其原理。 阅读全文
posted @ 2016-05-20 16:13 hoohack 阅读(831) 评论(1) 推荐(7) 编辑
摘要: 因为strpos/stripos返回的是位置,位置从0开始计算,所以判断查找失败都用 === FALSE 更适合。 阅读PHP的源码收获挺多,一方面可以知道某个函数的具体实现原理是怎样的,另一方面可以学习到一些编程优化方案。 阅读全文
posted @ 2016-05-10 18:16 hoohack 阅读(998) 评论(1) 推荐(4) 编辑
摘要: 最近一直在研究sphinx的工作机制,在[搜索引擎]Sphinx的介绍和原理探索简单地介绍了其工作原理之后,还有很多问题没有弄懂,比如底层的数据结构和算法,于是更进一步地从数据结构层面了解其工作原理。在网上搜了很多资料,发现没有很多介绍这方面的文章,后来找到了一本书,《这就是搜索引擎》,拜读了本书的第三章,介绍了主流搜索引擎用的数据结构及其工作原理,sphinx使用的数据结构也是一样的,用的也是倒排索引。 阅读全文
posted @ 2016-05-08 10:58 hoohack 阅读(3374) 评论(5) 推荐(11) 编辑
摘要: 最近在FreeCodeCamp上面学习前端知识,不知不觉已经学到了319课,现在遇到的一个小project是做一款井字游戏。说起井字游戏,真是满满的童年味道,还记得最疯狂的时候是小时候跟同桌拿着一张草稿纸就能玩一节课,回到家跟弟弟也能继续玩,对于没有太多娱乐节目的童年来说,真是一款玩不厌的小游戏。这款游戏代码比较简单,主要是掌握算法的原理,但是也有一些需要注意的地方,于是想把自己遇到的问题记录下来。 阅读全文
posted @ 2016-04-26 10:43 hoohack 阅读(1503) 评论(3) 推荐(3) 编辑
摘要: 在MySQL的IN语句里面做参数绑定时应该一个一个的绑定。 阅读全文
posted @ 2016-04-21 18:34 hoohack 阅读(2137) 评论(1) 推荐(2) 编辑
摘要: 当然,有人会说数据库的索引也可以做到sphinx索引,只是数据结构不一样而已,但是,最大的不同是sphinx就像一张没有任何关系查询支持的单表数据库。而且,索引主要用在搜索功能的实现而不是主要的数据来源。因此,你的数据库也许是符合第三范式的,但索引会完全被非规范化而且主要包含需要被搜索的数据。 另外一点,大部分数据库都会遭遇一个内部碎片的问题,它们需要在一个大请求里遭遇太多的半随机I/O任务。那就是说,考虑一个在数据库的索引中,查询指向索引,索引指向数据,如果数据因为碎片问题被分开在不同的磁盘中,那么此次查询将占用很长的时间。 阅读全文
posted @ 2016-04-20 18:30 hoohack 阅读(2124) 评论(0) 推荐(3) 编辑
摘要: 之前在[译]更快的方式实现PHP数组去重讨论了使用array_flip后再调用array_keys函数替换直接调用array_unique函数实现数组去重性能较好。由于原文没有给出源码分析和测试的结果,导致给读者造成迷惑,在此说声抱歉。为了解开读者的疑惑,笔者承诺了会补上源码的分析,现在此补上详细的说明。 阅读全文
posted @ 2016-02-24 18:07 hoohack 阅读(1400) 评论(5) 推荐(8) 编辑
摘要: strlen函数说明。 int strlen ( string $string ) 在这篇文章,我们可以知道strlen函数是通过Zend Engine定义的。函数的定义可以在这里查看。 在这里也给出函数的源码: 阅读全文
posted @ 2016-02-24 17:39 hoohack 阅读(362) 评论(0) 推荐(0) 编辑