Welcome 微信登录

首页 / 网页编程 / PHP

PHP设计模式之观察者模式(Observer)详细介绍和代码实例

PHP设计模式之观察者模式(Observer)详细介绍和代码实例

【意图】定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新【GOF95】 又称为发布-订阅(Publish-Subscribe)模式、模型-视图(Model-View)模式、源-监听(Source-Listener)模式、或从属者(Dependents)模式【观察者模式结构图】【观察者模式中主要角色】1.抽象主题(Subject)角色:主题角色将所有对观察者对象的引用保存在一个集合中,每个主题可以有任意多...
2个自定义的PHP in_array 函数,解决大量数据判断in_array的效率问题

2个自定义的PHP in_array 函数,解决大量数据判断in_array的效率问题

但是如果数组比较大的时候,性能就会下降,运行的就会久一点,那如果针对在大数组情况下做优化呢,下面说两种方法(都是通过自定义函数来实现):1.数组key与value翻转,通过isset判断key是否存在于数组中复制代码 代码如下:/*** in_array is too slow when array is large*/public static function inArray($item, $array) { $flipArray = array_fl...
免费的ip数据库淘宝IP地址库简介和PHP调用实例

免费的ip数据库淘宝IP地址库简介和PHP调用实例

一、关于淘宝IP地址库我们目前提供的服务包括:1. 根据用户提供的IP地址,快速查询出该IP地址所在的地理信息和地理相关的信息,包括国家、省、市和运营商。2. 用户可以根据自己所在的位置和使用的IP地址更新我们的服务内容。我们的优势:1. 提供国家、省、市、县、运营商全方位信息,信息维度广,格式规范。2. 提供完善的统计分析报表,省准确度超过99.8%,市准确度超过96.8%,数据质量有保障。二、接口说明1. 请求接口(GET):http://ip.tao...
php解决约瑟夫环示例

php解决约瑟夫环示例

约瑟夫问题(有时也称为约瑟夫斯置换,是一个出现在计算机科学和数学中的问题。在计算机编程的算法中,类似问题又称为约瑟夫环。又称“丢手绢问题”.)猴子一群,都带着号码的,站好了一圈,数到m的枪毙,剩下的接着数。如此往复,死剩下的一个就疯了复制代码 代码如下:<?phpfunction killMonkeys($monkeys, $m){ $k = $m; while (count($monkeys)){ $k = $k - 1; $monkey = ar...
PHP读取大文件的类SplFileObject使用介绍

PHP读取大文件的类SplFileObject使用介绍

如果加载的文件特别大时,如几百M,上G时,这时性能就降下来了,那么PHP里有没有对大文件的处理函数或者类呢? 答案是:有的。PHP真的越来越“面向对象”了,一些原有的基础的SPL方法都开始陆续地实现出class了。从 PHP 5.1.0 开始,SPL 库增加了 SplFileObject 与 SplFileInfo 两个标准的文件操作类。SplFileInfo 是从 PHP 5.1.2 开始实现的。从字面意思理解看,可以看出 SplFileObject 要...
排序算法之PHP版快速排序、冒泡排序

排序算法之PHP版快速排序、冒泡排序

一、快速排序1.简介快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。快速排序使用分治法(Divide and conquer)策略来把一个串行(list)分为两个子串行(sub-lists)。2.步骤从数...
PHP扩展模块Pecl、Pear以及Perl的区别

PHP扩展模块Pecl、Pear以及Perl的区别

一、简短总结:pear:一个书写的比较规范,国外较流行的工具箱代码集pecl:php扩展包,但不属于php基本扩展范围perl:一种早于php出现的脚本级语言,php借鉴了他的正则表达式部分二、Pear、Pecl都是PHP扩展模块的集合。是扩展PHP的两种方法:A.一种是用纯粹的PHP代码写函数和类。Pear就是这样一个项目。PEAR是PHP的官方开源类库(PHP Extension and Application Repository的缩写)。Pear在...
PHP二维数组排序的3种方法和自定义函数分享

PHP二维数组排序的3种方法和自定义函数分享

关于排序一般我们都是通过数据库或者nosql(eg:redis)先排好序然后输出到程序里直接使用,但是有些时候我们需要通过PHP直接来对数组进行排序,而在PHP里存储数据用到最多的就是对象和数组,但处理较多的就是数组,因为有非常丰富的内置函数库(其实对象一定程度上也可以理解为是数组),这些函数库很大程度上可以帮助我们实现某些功能。常用的系统函数有sort、asort、arsort、ksort、krsort等等,这里我主要说下对二维数组的排序,两种方法:一、...
PHP按行读取、处理较大CSV文件的代码实例

PHP按行读取、处理较大CSV文件的代码实例

对于数百万条数据量的CSV文件,文件大小可能达到数百M,如果简单读取的话很可能出现超时或者卡死的现象。为了成功将CSV文件里的数据导入数据库,分批处理是非常必要的。下面这个函数是读取CSV文件中指定的某几行数据:复制代码 代码如下:/*** csv_get_lines 读取CSV文件中的某几行数据* @param $csvfile csv文件路径* @param $lines 读取行数* @param $offset 起始行数* @return array...
PHP快速按行读取CSV大文件的封装类分享(也适用于其它超大文本文件)

PHP快速按行读取CSV大文件的封装类分享(也适用于其它超大文本文件)

CSV大文件的读取已经在前面讲述过了(PHP按行读取、处理较大CSV文件的代码实例),但是如何快速完整的操作大文件仍然还存在一些问题。1、如何快速获取CSV大文件的总行数?办法一:直接获取文件内容,使用换行符进行拆分得出总行数,这种办法对小文件可行,处理大文件时不可行;办法二:使用fgets一行一行遍历,得出总行数,这种办法比办法一好一些,但大文件仍有超时的可能;办法三:借助SplFileObject类,直接将指针定位到文件末尾,通过SplFileObje...
免费手机号码归属地API查询接口和PHP使用实例分享

免费手机号码归属地API查询接口和PHP使用实例分享

免费手机号码归属地API查询接口和PHP使用实例分享最近在做全国性的行业分类信息网站,需要用到手机号归属地显示功能,于是就穿梭于各大权威站点之间偷来了API的接口地址。 分享出来,大家可以用到就拿去呵。 一、淘宝网API 复制代码 代码如下:API地址: http://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=15850781443 参数: tel:手机号码 返回:JSON 二、拍拍API 复制代码...
Session的工作机制详解和安全性问题(PHP实例讲解)

Session的工作机制详解和安全性问题(PHP实例讲解)

我们先简单的了解一些http的知识,从而理解该协议的无状态特性。然后,学习一些关于cookie的基本操作。最后,我会一步步阐述如何使用一些简单,高效的方法来提高你的php应用程序的安全性以及稳定行。我想大多数的php初级程序员一定会认为php默认的session机制的安全性似乎是有一定保障的,事实恰好相反 – php团队只是提供了一套便捷的session的解决方案提供给程序员使用,至于安全性的话,应该由程序员来加强,这是应用程序开发团队的责任。因为,这里面...
PHP入门经历和学习过程分享

PHP入门经历和学习过程分享

经常在某些论坛和QQ群里看到一些朋友会问“怎样才能学好PHP,怎样才能学好***语言 ”,但别人回答最多的是:从最“简单”的开始。这个简单也许真的不简单,呵呵。下面我想分享一下自己学习的一些过程。先说些费话,语言组织能力差,说了不少费话,愿意看的就看,不要骂我就行。其实学习一门新语言并不是太难,重要的是你有没有准备好去学好它,时间的长短和个人的能力和决心有关。黑客界也流行一句话就是“没有入侵不了的计算机”,这句话大概的意思是说:如果你的技术比维护这台计算机...
<< 371 372 373 374 375 376 377 378 379 380 >>