/* 【数组函数】 *///统计计算
count        计算数组中的单元数目或对象中的属性个数
array_count_values  统计数组中所有的值出现的次数
array_product       计算数组中所有值的乘积
array_sum           计算数组中所有值的和
range        建立一个包含指定范围单元的数组array_chunk        将一个数组分割成多个
   array array_chunk(array $input, int $size[, bool $preserve_keys]) array_filter    用回调函数过滤数组中的单元array_slice     从数组中取出一段
   array array_slice($arr, $offset [,$len [,$preserve_keys]])array_keys        返回数组中所有的键名
   array array_keys(array $input[, mixed $search_value[, bool $strict]] )
    如果指定了可选参数 search_value,则只返回该值的键名。否则input数组中的所有键名都会被返回。array_values    返回数组中所有的值,并建立数字索引

array_merge合并一个或多个数组

一个数组中的值附加在前一个数组的后面。

如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。

如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。

如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。array_merge_recursive    递归地合并一个或多个数组

//搜索

in_array            检查数组中是否存在某个值

bool in_array(mixed $needle, array $haystack[, bool$strict])array_key_exists    检查给定的键名或索引是否存在于数组中

isset()对于数组中为NULL的值不会返回TRUE,而 array_key_exists()会array_search        在数组中搜索给定的值,如果成功则返回相应的键名

array_combine    创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值

如果两个数组的单元数不同或者数组为空时返回FALSE。array_rand        从数组中随机取出一个或多个单元,返回键名或键名组成的数组,下标是自然排序的

array_fill      用给定的值填充数组

array_fill($start, $num, $value)array_flip      交换数组中的键和值array_pad       用值将数组填补到指定长度array_reverse   返回一个单元顺序相反的数组array_unique    移除数组中重复的值array_splice    把数组中的一部分去掉并用其它值取代

implode            将数组元素值用某个字符串连接成字符串explode($delimiter,$str [,$limit])    //使用一个字符串分割另一个字符串

$delimiter不能为空字符串""

array_map        将回调函数作用到给定数组的单元上,只能处理元素值,可以处理多个数组

如果callback参数设为null,则合并多个数组为一个多维数组

array_walk        对数组中的每个成员应用用户函数,只能处理一个数组,键和值均可处理,与foreach功能相同

bool array_walk ( array &$array , callback $funcname [, mixed $userdata ] )

//栈:

后进先出入栈和出栈会重新分配索引下标array_push        将一个或多个单元压入数组的末尾(入栈)array_pop        将数组最后一个单元弹出(出栈)        使用此函数后会重置(reset())array 指针。

//队列:

先进先出队列函数会重新分配索引下标array_unshift    在数组开头插入一个或多个单元array_shift        将数组开头的单元移出数组            使用此函数后会重置(reset())array 指针。

//排序函数

sort            对数组排序rsort            对数组逆向排序asort            对数组进行排序并保持索引关系arsort            对数组进行逆向排序并保持索引关系ksort            对数组按照键名排序krsort            对数组按照键名逆向排序usort            使用用户自定义的比较函数对数组中的值进行排序uksort            使用用户自定义的比较函数对数组中的键名进行排序uasort            使用用户自定义的比较函数对数组中的值进行排序并保持索引关联natsort            用用“自然排序”算法对数组排序natcasesort        用“自然排序”算法对数组进行不区分大小写字母的排序array_multisort 对多个数组或多维数组进行排序shuffle            将数组打乱

引用传递参数,返回bool值。

重新赋予索引键名,删除原有键名

//差集

array_udiff_assoc   带索引检查计算数组的差集,用回调函数比较数据array_udiff_uassoc  带索引检查计算数组的差集,用回调函数比较数据和索引array_udiff         用回调函数比较数据来计算数组的差集array_diff_assoc    带索引检查计算数组的差集

array_diff_key      使用键名比较计算数组的差集array_diff_uassoc   用用户提供的回调函数做索引检查来计算数组的差集

array_diff_ukey     用回调函数对键名比较计算数组的差集array_diff          计算数组的差集//交集array_intersect_assoc 带索引检查计算数组的交集

array_intersect_key 使用键名比较计算数组的交集array_intersect_uassoc 带索引检查计算数组的交集,用回调函数比较索引

array_intersect_ukey 用回调函数比较键名来计算数组的交集array_intersect 计算数组的交集array_key_exists 用回调函数比较键名来计算数组的交集array_uintersect_assoc 带索引检查计算数组的交集,用回调函数比较数据array_uintersect 计算数组的交集,用回调函数比较数据

extract($arr [,$type [,$prefix]])   从数组中将变量导入到当前的符号表(接受结合数组$arr作为参数并将键名当作变量名,值作为变量的值)compact($var [,...])   建立一个数组,包括变量名和它们的值(变量名成为键名而变量的内容成为该键的值)

/* 【伪类型】 */

mixed        说明一个参数可以接受多种不同的(但并不必须是所有的)类型。number        说明一个参数可以是 integer 或者 float。callback    回调函数

void       void作为返回类型意味着函数的返回值是无用的。

void作为参数列表意味着函数不接受任何参数。

/* 【数据库操作】 */

#连接认证mysql_connect        连接并认证数据库#发送SQL语句,接收执行结果mysql_query            发送SQL语句

仅对select, show, explain, describe语句执行成功返回一个资源标识符,其他语句成功返回true。执行失败均返回false。#处理结果mysql_fetch_assoc    从结果集中取得一行作为关联数组

每次只取回一条,类似each

结果集中记录指针mysql_fetch_row        从结果集中取得一行作为枚举数组mysql_fetch_array    从结果集中取得一行作为关联数组,或数字数组,或二者兼有

array mysql_fetch_array ( resource $result [, int $ result_type  ] )

可选参数result_type可选值为:MYSQL_ASSOC,MYSQL_NUM 和 MYSQL_BOTH(默认)mysql_free_result    释放结果内存#关闭链接mysql_close            关闭连接

/* 【类和对象】 */

# 成员:    类成员:类常量、静态属性、静态方法

对象成员:非静态属性、非静态方法

# 除此外,类不能包含任何其他东西!!!

# 类名、方法名、属性名均不区分大小写

# $this代表本对象,self代表本类,parent代表父类

# 类和函数均可被事先编译(仅作为最外层时)

# 类的定义必须在单一的PHP区块内,不能被多个PHP标签分割

// 构造方法

- 具有构造函数的类会在每次创建新对象时先调用此方法

void __construct([ mixed $args [, $... ]] )- 构造方法所需参数由new实例化对象时,给类增加参数值。- 构造方法也可以被手动调用。- 5.3.3版本以前,支持于类名同名的方法作为构造方法。- 两种冲突时,__construct 优先

// 析构方法

- 析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行。

void __destruct( void )# 作用:释放对象所占用的资源

# 调用的时机

- 脚本结束时所有资源均被释放,包括对象

- 手动删除对象时

- 保存对象的变量被赋予新值时(任何值,包括null)

- 在使用exit()终止脚本运行时也会被调用

// 静态成员(static关键字)

- 声明类成员或方法为static,就可以不实例化类而直接访问。

- 静态成员(属性或方法)均属于类,故不能通过$this或->访问。

- 静态成员是所有对象共享,属于类。

- 静态成员用类调用,非静态成员用对象调用。# 静态属性

- 静态属性不可以由对象通过->操作符来访问。

- 静态属性只能被初始化为一个字符值或一个常量,不能使用表达式。 所以你可以把静态属性初始化为整型或数组,但不能指向另一个变量或函数返回值,也不能指向一个对象。# 静态方法

- 由于静态方法不需要通过对象即可调用,所以伪变量$this在静态方法中不可用。

- 用::方式调用一个非静态方法会导致一个E_STRICT级别的错误。

// 访问解析操作符(::)

- 可以用于访问静态成员、方法和常量,还可以用于覆盖类中的成员和方法。

- 当在类的外部访问这些静态成员、方法和常量时,必须使用类的名字。

- self 和 parent 这两个特殊的关键字是用于在类的内部对成员或方法进行访问的。

// 访问辨析

- 对象成员,内部通过$this指定,外部通过对象名指定,均用->访问,访问属性时不需加$。

对象名->属性名    对象名->方法名()    $this->属性名        $this->方法名()- 类成员,内部通过self或parent指定,外部通过类名指定,均用::访问,访问属性时需加$。

类名::$属性名    类名::方法名()       self::$属性名        self::方法名()- 特殊:也可以通过对象访问类成员。(不建议)

对象名::$类属性名    $this::$类属性名    对象名::$类方法名()    $this::类方法名()# 对象成员访问用->,类成员访问用::

- 无论是静态方法还是非静态方法,均可通过类或对象进行访问。- 静态属性通过类访问,静态方法通过对象访问。- 只有使用对象调用非静态方法时,$this才可以使用!- 静态方法不可使用$this。- 类可以调用对象方法,但注意方法内不能有$this。- 非静态方法可以调用静态属性或静态方法,反之不可以。

// 类常量

- 常量的值将始终保持不变。- 在定义和使用常量的时候不需要使用$符号。- 常量的值必须是一个定值,不能是变量,类属性或其它操作(如函数调用)的结果。# 定义:const 常量名 = 常量值;

- 不需要加public等访问修饰限定符- 类常量属于类,使用类访问,类名::类常量 或 self::类常量

// 自动加载对象

- 在试图使用尚未被定义的类时自动调用 __autoload 函数- 自动加载使用到的类名文件(根据类名找相应名称的文件,故需类名与类文件名一致)- 每个需要加载类的文件都需要存在__autoload函数-将__autoload函数写入单独的文件,每个需要用到类的文件再require该函数文件- __autoload 参数是类名function __autoload($class_name) {

require_once $_SERVER["DOCUMENT_ROOT"] . "/class/$class_name.php";

}

// $_SERVER["DOCUMENT_ROOT"] 当前运行脚本所在的文档根目录

- 可以通过类名,来推导出类所在的文件名!- 如果一个项目存在多个自动加载函数时,定义一个可以完成加载的普通函数,并在函数之前使用spl_autoload_register注册该函数。# spl_autoload_register

- 注册__autoload()函数

bool spl_autoload_register ([ callback $autoload_function ] )- 可以注册多个自动加载函数,先注册的先执行- 一旦注册自动加载函数,__autoload就失效。- 注册函数时,参数为函数名(注意加引号);注册方法时,参数为数组# 注册类或对象的方法为自动加载方法时,参数需为数组:

spl_autoload_register(array(__CLASS__, '__autoload'));

__CLASS__表示当前类名,若是对象可用$this,详细见手册

PHP最全笔记(三)(值得收藏,不时翻看一下)的更多相关文章

  1. C/C++编程笔记:C语言入门知识点(三),请收藏C语言最全笔记!

    今天我们继续来学习C语言的入门知识点,第一课:C/C++编程笔记:C语言入门知识点(二),请收藏C语言最全笔记! 21. 输入 & 输出 当我们提到输入时,这意味着要向程序填充一些数据.输入可 ...

  2. 前端学习——css基础知识,选择器与html模板、值得收藏的html标签

    一.css需要的html(采用html5标准) DTD,文档类型声明: <!Doctype html> 文本编码声明: <meta charset="utf-8" ...

  3. 《CMake实践》笔记三:构建静态库(.a) 与 动态库(.so) 及 如何使用外部共享库和头文件

    <CMake实践>笔记一:PROJECT/MESSAGE/ADD_EXECUTABLE <CMake实践>笔记二:INSTALL/CMAKE_INSTALL_PREFIX &l ...

  4. 最值得收藏的Bootstrap资源网站

    如果你正在寻找Bootstrap图标,那今天的推荐对你而言绝对非常重要!在这篇内容中,我们把这套框架上的免费字体图 标做了个整合(当然,以后还会不断的更新).正如你所知,图标字体在一个web网页设计拥 ...

  5. 各种常用的JSON接口,开动你的大脑你就可以做出各种应用,值得收藏

    各种常用的JSON接口,开动你的大脑你就可以做出各种应用,值得收藏   浏览:1412 发布日期:2014/01/27 分类:技术分享 这里为大家搜集了一些能够返回JSON格式的服务接口.部分需要用J ...

  6. java之jvm学习笔记三(Class文件检验器)

    java之jvm学习笔记三(Class文件检验器) 前面的学习我们知道了class文件被类装载器所装载,但是在装载class文件之前或之后,class文件实际上还需要被校验,这就是今天的学习主题,cl ...

  7. mac设计师系列 Adobe “全家桶” 15款设计软件 值得收藏!

    文章素材来源:风云社区.简书 文章收录于:风云社区 www.scoee.com,提供1700多款mac软件下载 Adobe Creative Cloud 全线产品均可开放下载(简称Adobe CC 全 ...

  8. 学习笔记(三)--->《Java 8编程官方参考教程(第9版).pdf》:第十章到十二章学习笔记

    回到顶部 注:本文声明事项. 本博文整理者:刘军 本博文出自于: <Java8 编程官方参考教程>一书 声明:1:转载请标注出处.本文不得作为商业活动.若有违本之,则本人不负法律责任.违法 ...

  9. 响应式编程笔记三:一个简单的HTTP服务器

    # 响应式编程笔记三:一个简单的HTTP服务器 本文我们将继续前面的学习,但将更多的注意力放在用例和编写实际能用的代码上面,而非基本的APIs学习. 我们会看到Reactive是一个有用的抽象 - 对 ...

  10. python学习两月总结_汇总大牛们的思想_值得收藏

    下面是我汇总的我学习两个月python(version:3.3.2)的所有笔记 你可以访问:http://www.python.org获取更多信息 你也可以访问:http://www.cnblogs. ...

随机推荐

  1. 洛谷.T21778.过年(线段树 扫描线)

    题目链接或者这吧.. 被数据坑了 /* 操作按左端点排个序 依次进行即可 不是很懂 为什么不写Build 而在Add时改mp[rt]=p 会WA(too short on line 251..) 找到 ...

  2. BZOJ.3809.Gty的二逼妹子序列(分块 莫队)

    题目链接 /* 25832 kb 26964 ms 莫队+树状数组:增加/删除/查询 都是O(logn)的,总时间复杂度O(m*sqrt(n)*logn),卡不过 莫队+分块:这样查询虽然变成了sqr ...

  3. Python解释数学系列——分位数Quantile

    跳转到我的博客 1. 分位数计算案例与Python代码 案例1 Ex1: Given a data = [6, 47, 49, 15, 42, 41, 7, 39, 43, 40, 36],求Q1, ...

  4. centos7 修改同步时间

    同步时间安装ntp软件 [root@node2 ~]# yum install ntp 将ntp设为开机启动 [root@node2 ~]# systemctl enable ntpd 修改启动参数, ...

  5. phantomjs + python 打造一个微信机器人

    phantomjs + python 打造一个微信机器人 1.前奏   媳妇公司不能上网,但经常需要在公众号上找一些文章做一些参考,需要的时候就把文章链接分享给我,然后我在浏览器打开网页,一点点复制过 ...

  6. C、C++、C#、Java、php、python语言的内在特性及区别

    C.C++.C#.Java.PHP.Python语言的内在特性及区别: C语言,它既有高级语言的特点,又具有汇编语言的特点,它是结构式语言.C语言应用指针:可以直接进行靠近硬件的操作,但是C的指针操作 ...

  7. Java编程最差实践(常见编程错误典范)

    转载自  http://macrochen.iteye.com/blog/1393502 每天在写Java程序,其实里面有一些细节大家可能没怎么注意,这不,有人总结了一个我们编程中常见的问题.虽然一般 ...

  8. MongoDB 进程控制系列二:结束进程

    1:如果某个进程产生了异常,可以考虑将其kill掉 db.killOp(10417) db.killOp(10417/*opid*/) 等同于: db.$cmd.sys.killop.findOne( ...

  9. :app:compileDebugJavaWithJavac

    org.gradle.initialization.ReportedException: org.gradle.internal.exceptions.LocationAwareException: ...

  10. JMX-Java Management Extensions

    JMX全称Java Management Extensions, 为Java应用提供管理扩展功能.在Java 5的时候引入 概念 Name Description MBean 全称为Managed B ...