php
低调小一
Ubuntu重度患者,曾经的服务器开发工程师,如今正在深入学习到Android Framework
展开
-
php判断数组是否有序
今天就是国庆长假的最后一天,无心搞业务代码,看到群里讨论php如何判断数组有序,我就给实现了一个复杂度为N的算法,贴出代码供大家学习<?phpfunction JudegSortArray($array) { if ($array [0] > $array [1]) { $flag = 1; } else { $flag = 0; } $temp = $flag;原创 2012-09-29 14:53:38 · 3890 阅读 · 2 评论 -
PHP面试题(一)
前言快开始校招了,我应聘的职位以php和c开发为主,最近也会从网上找几套php面试的题目,亲自做一遍并且记录一下基础题1.回答<?php$str1 = null;$str2 = false;echo $str1 == $str2 ? '相等' : '不相等';相等.<?php$str1 = '';$str2 = 0;echo $str1 ==原创 2013-08-20 21:26:34 · 2398 阅读 · 0 评论 -
PHP实现斐波那契数列
简介 斐波那契数列(Fibonacci Sequence),又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*)。我用递归和迭代两种方法实现了斐波那契数列实现代码(php)<?phpclass Fibonacci{原创 2012-05-15 19:47:16 · 6356 阅读 · 0 评论 -
几道php基础面试题
几道php基础面试题目原创 2013-07-27 15:10:57 · 2554 阅读 · 0 评论 -
PHP实现简单的socket通信
前言昨晚复习了一下用c如何实现客户端和服务器端的socket通信,参考链接:http://blog.csdn.net/zinss26914/article/details/9226413, 因为我主要开发语言是php,所以今天用php模拟实现了一个服务器端的socket守护进程,参考的是一淘工程师张洋的bolg:http://blog.codinglabs.org/articles/write原创 2013-07-03 17:00:12 · 4941 阅读 · 0 评论 -
PHP设计模式——责任链模式
概述责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态的重新组织和分配责任UML图描述一个简单责任链模式的实现责任链模式涉及到的角色原创 2013-06-27 17:37:43 · 2257 阅读 · 0 评论 -
PHP设计模式——策略模式
概述策略模式属于对象的行为模式。其用意是针对一组算法,将每个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化UML图策略模式中主要角色这个模式设计到三个角色:环境角色(Context):持有一个Strategy的引用抽象策略(Strategy)角色:这是一个抽象角色原创 2013-06-25 11:47:59 · 2436 阅读 · 0 评论 -
PHP设计模式——状态模式
前言2年多我在项目中用到最多的设计模式就是状态模式,这里记录一下定义状态模式,又称状态对象模式(Pattern of Objects for State),状态模式就是对象的行为模式。状态模式允许一个对象在其内部状态改变的时候改变其行为。这个对象看上去就像是改变了它的类一样UML图状态模式中主要角色抽象状态角色(State):定义一个接口或抽原创 2013-06-24 17:35:14 · 2616 阅读 · 0 评论 -
php关联数组排序(快速排序)
起因好吧,我承认最近我跟快速排序干上了,各种测试编写快速排序程序,现在就用php实现快速排序,跟之前文章不同,这次php的快排是能解决实际需要的.下面的文章里我会用c语言的思想提出两种php快速排序的解决方案:自己实现快速排序,用分治和归并的思想调用系统的usort,类似于c的qsort,感谢dickeylth的提醒使用环境和条件有这样一种情况,php里面的关联原创 2012-10-09 13:33:02 · 5117 阅读 · 4 评论 -
php的gc机制
PHP的gcphp的垃圾回收机制主要有三个方面的知识引用计数基本知识回收周期(Collecting Cycles)性能方面考虑的因素引用计数基本知识每个php变量存在一个叫做"zval"的变量容器中.一个zval变量容器,除了包含变量的类型和值,还包括两个字节的额外信息.第一个是"is_ref",是个bool值,用来标识这个变量是否是属于引用集合(referen翻译 2013-08-22 09:17:15 · 2510 阅读 · 0 评论 -
Redis多库选择单例类
前言qq群里有同学问redis如何进行多库选择,用php实现了一下,还望各位多多指点代码<?phpclass MultiRedisConnect{ /** * hostname * * @var string */ const REDISHOSTNAME = "127.0.0.1"; /** *原创 2013-08-23 10:37:24 · 3389 阅读 · 0 评论 -
PHP中交换两个变量的值
本来今天想更新php操作socket的代码,但是由于项目上原因实在没什么心情,不过过段时间会操作短信网关,到时候自然会更新socket代码,今天主要是将如何利用php交换两个数。 首先,采用php的list数据结构。上代码,然后再解析 function swap(&$a, &$b) { list ( $a, $b ) = array ($b, $a ); }list:原创 2012-05-21 17:41:23 · 6097 阅读 · 1 评论 -
PHP接收上传文件
前言这星期一直再搞php,涉及到文件上传的部分有些遗忘,这里记录一下HTML的form表单用html的表单模拟一个文件上传的post请求,代码如下:File Upload Send this File: 注意:要确保文件上传表单的属性是 enctype="multipart/form-data",否则文件上传原创 2014-01-02 20:45:12 · 8173 阅读 · 0 评论 -
PHP面向对象——接口和多态性
前言今天查看本科生c++试卷的时候,发现还是有同学学习过c++之后,却对面向对象的3大特性都不了解,这里用php解释一下接口和多态性,也当作是一种自我学习吧接口PHP类是单继承,也就是不支持多继承,当一个类需要多个类的功能时,继承就无能为力了,为此PHP引入了接口技术如果一个抽象类里面的所有方法都是抽象方法,且没有声明变量,而且接口里面所有的成员都是public权限原创 2013-06-20 20:20:13 · 4047 阅读 · 0 评论 -
按行读取文件(php、c实现)
前言感觉很糟糕的一场电话一面竟然给了二面通知,好吧,给自己一个机会也给对方一次机会,题外话。海量数据处理经常涉及到hash将原来文件的每一行散列到子文件中,那如何按行读取文件呢,这里记录一下php和c的实现很水的一篇,只是记录一下常用的方法,防止面试尴尬php<?php/** * 按行读取文件 * @param string $filename原创 2013-10-15 19:01:59 · 10663 阅读 · 4 评论 -
一些PHP面试题目
前言生活总是要往前看,等待了一天也没有阿里的面试通知,心情是相当灰暗,但是生活总要继续,还是要向前看,做几道PHP的面试题目,毕竟我的主要开发语言还是PHP题目1、一个包含中英文的字符串如何获得它的自然长度需要考虑汉字的字符编码,注意UTF-8中一个汉字占3个字节<?php/** * 获取中英文混排的字符串的长度 */$str = "还没等原创 2013-09-24 00:07:19 · 5364 阅读 · 1 评论 -
curl伪造IP
前言一朋友想访问一个网站,发现进一个论坛必须推广链接地址,也就是需要20个不同的ip进行访问,呵呵,这多丢人,为了帮伙计一下,果断用上curl原理(1)整理一份ip库出来,网上google一下一大片(2)修改CURLOPT_HTTPHEADER字段,设置X-FORWARD-FOR和CLIENT-IP字段整理IP库我网上随便找了一个链接:htt原创 2013-10-05 15:47:03 · 7364 阅读 · 0 评论 -
PHP面试题(二)
前言从网上找了一套号称是百度的php面试题目,这里记录一下PHP的gc机制php的垃圾回收机制注意以下几点即可:引用计数refcount和is_ref,也就是php不会随意的malloc内存空间,而是用类似c的指针的方式,增加引用计数,引用计数为0就free掉变量,每个变量在底层实现都是一个在zval的结构体php5.3之前无法解决循环引用计数的问题,会导致内存泄漏原创 2013-08-22 11:56:26 · 2047 阅读 · 0 评论 -
php判断一个数组是另一个数组的子集
前言今天完成一个算法的过程中,有几个需求模块,其中就有判断$a数组是否是$b数组的子集,可能最近我写c比较多,直接就用for循环实现了,但是感觉代码量比较大,不够优雅!在qq群里集思广益了一下,发现很多php提供的系统功能函数都是可以供调用的,这里记录一下需求最少的时间复杂度判断$a数组是否是$b数组的子集// 快速的判断$a数组是否是$b数组的子集$a = array(原创 2013-05-08 16:14:05 · 11150 阅读 · 1 评论 -
PHP的cURL使用
概述cURL是一个利用URL语法规定来传输文件和数据的工具,支持很多协议,如HTTP、FTP、TELNET等。PHP提供了对cURL库的支持。linux下man一下curl,可以看到:开启cURL设置安装php的cURL库扩展sudo apt-get install curl libcurl3 libcurl3-dev php5-curl原创 2013-05-21 20:39:43 · 1822 阅读 · 0 评论 -
php汉字转拼音
Unicode起源与发展Unicode是为了解决传统的字符编码方案的局限而产生的,例如ISO 8859所定义的字符虽然在不同的国家中广泛地使用,可是在不同国家间却经常出现不兼容的情况。很多传统的编码方式都有一个共同的问题,即容许电脑处理双语环境(通常使用拉丁字母以及其本地语言),但却无法同时支持多语言环境(指可同时处理多种语言混合的情况)在文字处理方面,统一码为每一个字符而非字原创 2013-04-07 18:24:22 · 1591 阅读 · 0 评论 -
php——数据库连接的伪单例模式代码
各位redis群的同学,帮忙查看指正一下代码,多谢了,希望看到各位的改进意见<?phpclass Singleton{ // MYSQL数据库连接信息 const MYSQLHOSTNAME = "127.0.0.1"; const MYSQLCHARSET = "utf8"; private static $instances = array(); //伪类单例 private原创 2012-10-23 21:38:33 · 2974 阅读 · 0 评论 -
PHP反射API
反射的理解它是指在php的运行状态中,扩展分析php程序,导出或者提取出关于类、方法、属性、参数等详细信息,甚至包括注释。这种动态获取的信息以及动态调用对象的方法的功能称为反射API。反射是操纵面向对象模型中元模型的API,其功能十分强大,可以帮助我们构建复杂,可扩展的应用。(ps:包括在工厂模式中的使用)反射API是php内建的oop技术扩展,包括一些类、异常和接口,综合使用他们可用来帮原创 2012-10-23 15:10:46 · 3299 阅读 · 0 评论 -
字符串去除特定字符
周六,刚顾着陪女朋友玩了,九度OJ想AC一道简单的题目,结果在scanf上遇到了点问题,唉,周六大好的时间就没有深入研究,今天趁着来公司看了一下scanf实现机制,解决了靠,蛋疼的csdn,刚才写了一大堆竟然没保存,直接上代码了题目描述:输入字符串s和字符c,要求去掉s中所有的c字符,并输出结果。输入:测试数据有多组,每组输入字符串s和字符c。原创 2012-09-23 15:41:47 · 1703 阅读 · 0 评论 -
php的冷门函数之——call_user_func_array,func_get_args,func_num_args
昨天帮同学研究php对mysql进行封装操作的时候,无意中看到了call_user_func_array这个函数,好歹我php也用了一年多了,竟然还有这么多我不知道的功能函数,因此我们的原则是宁肯多学,不能放过,下面我会举几个例子给大家介绍一下这几个冷门的php函数。话不多说,gogogogo 第一个函数,func_num_args,我们先来看一下php的manual对这个函数的解释原创 2012-09-13 10:02:27 · 2774 阅读 · 0 评论 -
php 获取数组中重复数据
两天前,需要用到找出php数组中的重复数据,总结了两种方法,在这里跟大家共享一下,求关注啊(1)利用php提供的函数,array_unique和array_diff_assoc来实现<?phpfunction FetchRepeatMemberInArray($array) { // 获取去掉重复数据的数组 $unique_arr = array_unique ( $array );原创 2012-09-29 09:47:00 · 14459 阅读 · 4 评论 -
PHP批量更新数据库
今天项目中用到了php批量更新数据库的方法,其实应该写存储过程的,无奈不想舍弃php,于是google了一下,发现可以利用multi_query函数实现拼量操作功能,我简要说明一下我的思路,并且会附上代码。大家看的时候也给些建议,优化一下代码,以后我的代码会选择开源共享,为的就是大家一起学习,话不多说,gogogo需求:批量更新数据库的一个字段,我们假设为random字段,用随机生成的6位字符原创 2012-05-17 16:50:28 · 4217 阅读 · 0 评论 -
php生成指定位数的随机字符串
最近项目里很多都用到了生成指定位数的随机字符串,随便写了个程序,大家可以参考一下,有更好的实现方法也可以跟贴留言,一起学习。OK,不叨叨了,上代码function create_random_string($random_length) { $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";原创 2012-05-16 16:55:46 · 3911 阅读 · 0 评论 -
PHP实现折半(二分)查找算法
刚才将排序和查找算法放在一起,感觉不方便阅读,因此将查找算法拿出来,供大家讨论php基于快速排序实现二分查找/** * Description:php实现二分查找算法的类 * @author wzy */class binary_search{ public $arr; public $key; function __construct($arr,$key){ //这原创 2012-05-15 16:51:54 · 2256 阅读 · 1 评论 -
php设计模式——单例模式
单例模式概念单例模式是指整个应用中类只有一个对象实例的设计模式。单例模式的特点一个类在整个应用中只有一个实例类必须自行创建这个实例必须自行向整个系统提供这个实例php中使用单例模式的原因我用php大部分操作都是和各种数据库打交道,包括mysql,redis,memcache等各种关系型和非关系型数据库,所以一个应用中会存在大量连接数据库的操作,如果不用单例模式,那每原创 2012-10-23 21:06:52 · 2549 阅读 · 0 评论 -
php安装使用http扩展类
前言php可以模拟浏览器向SAPI发送HTTP请求,但是前提是需要安装和使用HTTP扩展Ubuntu10.04安装http扩展安装libcurl3-openssl-dev(前提安装好pecl)sudo apt-get install libcurl4-openssl-devsudo apt-get install libmagic-dev安装pecl原创 2012-12-13 17:50:12 · 7264 阅读 · 0 评论 -
php比较运算符的bug
疑问首选,给出一个php的示例代码,如果你完全明白为什么会出现如下结果,就不需要再在这篇博客浪费时间了,这里是让php初学者注意一下可能会犯的错误<?phpvar_dump("abcdefg" == "0"); // bool(false)var_dump("abdsafd" == 0); // bool(true)如果你不是太清楚上面的结果,那就跟着博客原创 2013-03-27 11:32:12 · 2618 阅读 · 0 评论 -
php用date格式化输出指定范围的时间
需求今天做日志分析时,由于日志是按天分割的,我需要遍历30天的日志,如果获得类似20130101-20130131这样的数组后缀呢,写了个小程序实现了一下,这里记录一下,主要是date函数和strtotime函数的应用php实现代码<?$stand = "2013-01-";for ($i = 1; $i <= 31; $i ++) { $time = strto原创 2013-01-31 10:44:48 · 2941 阅读 · 0 评论 -
nginx+fpm记录php的error log
前言将架构从apache+mod_php迁移到nginx+fpm上,会发现如果php脚本出错,nginx的eror_log里不会有记录,只在access_log里记录了500状态码。出现的原因:nginx将php的脚本执行通过fastcgi转到fpm上,所以出错的信息当然不会记录在nginx的error_log里了,但是对于测试环境下程序员的调试这是个悲剧啊,所以我们需要配置fpm的错误日志原创 2013-01-09 18:57:37 · 24550 阅读 · 2 评论 -
php脚本解析nginx日志
nginx日志格式access_log日志格式log_format main '$server_name$remote_addr$remote_user[$time_local]"$request"' '$status$body_bytes_sent"$http_referer"' '"$ht原创 2013-01-30 15:05:29 · 3409 阅读 · 0 评论 -
php将二维关联数组转换成字符串
需求项目中遇到了二维关联数组转字符串的问题,查阅相关资料,写了如下程序,并且能过滤重复的关键字。举例,php的二维数组如下:$name = array( "self" => "wangzhengyi", "student" => array( "chenshan", "xiaolingang原创 2011-12-31 14:26:05 · 11740 阅读 · 3 评论 -
php获取GET方式传入的全部变量名称与值
前言这篇博客的需求是我需要将一个http请求例如127.0.0.1?a=123&b=456&c=789将所有的get参数取出来拼串到test.com后面,也就是最后理想的uri应该是test.com?a=123&b=456&c=789两种方法可以实现,建议做之前先google,我就是没有google导致返工$_SERVER["QUERY_STRING"]简介这是原创 2013-01-29 11:04:29 · 13645 阅读 · 0 评论 -
计算php脚本执行时间
前言快年假了,最近想多做些工作上的事情,帮助导师的公司度过难关吧,故而算法的文章会减少很多,可能会记录一些工作上的收获。今天查询数据库的时候感觉脚本执行时间挺久,写了个function计算php脚本的执行时间,记录一下吧microtime计算脚本执行时间 /** * Description:计算当前时间 * * @return float原创 2013-01-14 22:11:14 · 7348 阅读 · 0 评论 -
php检测上传excel文件类型
前言介绍一种比较高端检测上传文件类型的方法,可以防止后缀名修改等低端的检测错误,有耐心的同学可以参考一下,我会封装成类供调用MIME类型在把输出结果传送到浏览器上的时候,浏览器必须启动适当的应用程序来处理这个输出文档。这可以通过多种类型MIME(multipurpose internet mail extensions)来完成。在http中,MIME类型被定义在content-原创 2012-12-21 17:43:12 · 8950 阅读 · 0 评论 -
php实现一些快速排序算法
好久没来逛博客了,实在是因为项目太忙的缘故,抽不出时间来写,对不住关注我博客的同学了。最近复习了一下c语言,将C语言的一些排序算法用php实现了一下,贴出来大家供大家学习指正。 php实现插入排序/** * Description:php实现插入排序的类 * @author wzy */class insert_sort { public $arr; public $size原创 2012-05-15 16:02:46 · 2662 阅读 · 0 评论