Home > Backend Development > PHP Tutorial > Summary of knowledge accumulation when learning PHP_PHP tutorial

Summary of knowledge accumulation when learning PHP_PHP tutorial

WBOY
Release: 2016-07-21 15:07:42
Original
779 people have browsed it

PHP基础
一、初识PHP
PHP是与HTML混合使用的嵌入式语言。
1、PHP标记
默认标记 短标记,需在php.ini中将short_open_tag选项开启 短标记和其他标记不提倡使用

2、关键字不区分大小写,用户自定义的类名和函数名不区分大小写,变量名区分大小写

3、输出
boolean print(参数) 返回布尔值
void echo(参数) 无返回值echo的效率要高一点

二、数据类型
1、比较两个浮点数的通常方法是先移动若干小数位,然后转换为整型数据再进行比较。

2、双引号做分隔符的字符串支持变量名解析,单引号做分隔符的字符串不支持变量名解析。
$name="张三";
"$name"=>张三 || '$name'=>$name || "$name先生"=>空 || "{$name}先生"=>张三先生 || "${name}先生"=>张三先生

3、字符串定义的方式:单引号,双引号和heredoc(<<

4、对象类型必须显式的进行声明。类用关键字class定义,使用关键字new生成这个类的实例,使用->符号类访问类中的属性和方法
class car{public $cololr;function beep(){}}$mycar = new car; $mycar->color='red'; $mycar->beep();

5、PHP是一种弱语言类型,变量的类型会根据赋予的值自行确定,而且往往在变量声明的同时进行变量初值的赋值。

6、数据类型强制转换时,只须将需要的类型名写在变量前的括号内即可。

三、常量和变量
1、定义常量 define("常量名",表达式或值) 常量名建议全大写,但不是必需的
使用常量 直接使用定义的常量名,无须在常量名前加"$"
预定义常量:_FILE_当前PHP程序文件名 _LINE_当前PHP程序所在的行数(在哪指哪)

2、变量不需要显式的声明,在对变量赋初值时就对变量进行了声明。如果变量没有被设置初值,则其初值即为NULL。

3、变量的赋值:传值赋值和引用赋值。如$a=&$b; 即b原来指向了一个存储位置,引用赋值后,a也指向了这个存储位置,这时,
a或b的销毁都不会对对方造成任何影响,但是如果其中一个的值改变了,则另一个也会作出相同的改变。

4、访问预定义变量之使用超全局变量,总共9个超全局变量

5、局部变量:在函数内定义的变量 只能在函数内使用
全局变量:在函数外定义的变量 默认只能在函数外使用
要想在函数内使用全局变量,需要在函数内将变量用global声明,或者使用超全局变量数组&GLOBALS["变量名"]
在PHP中,只有函数能提供局部作用域。
超全局变量$GLOBALS包含了全部的变量
静态变量的特点:只有在第一次被调用时进行初始化,函数结束后不销毁,并且下次使用时,该变量还保留原来的值。
静态变量只能在函数内定义和使用。
可变变量:将变量的名字也作为一个变量来使用。$a=b;$b=c;$$a=$b=c;
外部变量:使用GET方式能传递的数据最大为256字节,使用POST最大为2MB

四、流程控制(仅写与java等其他语言的不同)
1、交互格式(冒号语法) 不建议使用,经典的比较直观

2、foreach():该语法是专门为数组设计的
第一种格式foreach(target_array as $value) statement
第二种格式foreach(target_array as $key=>$value) statement

3、break 数字:要跳出的结构的层数
contiue 数字:要跳出的结构的层数

4、exit语句可以结束当前整个脚本的执行,通常用于错误检查。
exit; exit("错误原因");
die()是exit的别名 $conn=mysql_connect("localhost","root","") or die("无法连接到MySQL服务器");

五、数组
1、关联数组与数字索引数组唯一的区别在于索引的类型。

2、数字索引数组
初始化:直接为数组元素赋值array()函数
如果数组不存在,那么为数组元素赋值的同时即可创建该数组
如果数组元素是按顺序排列的数字,则在对数组进行初始化时,可以使用range()函数
range()有3个参数,第一个参数指定初始值,第二个参数指定终止值,第三个参数可选,用于指定步长

3、关联数组
初始化:直接为数组元素赋值array()函数

4、与数组相关的运算符
+ 联合 $a+$b 将$附件到$a之后,但是任何索引值冲突的元素将不会被添加
== 等于 $a==$b 如果$a和$b包含相同元素,返回true(索引值和元素必须都相同) 除了顺序,其他必须完全一样
!= <> 不等于
=== 恒等 如果$a和$b包含相同顺序的相同元素,返回true(索引值和元素必须都相同) 必须完全一模一样
!== 不恒等

5、数组的排序
boolean sort() 按数字和字母顺序排列 排列后会赋予新的索引值,原有索引值被删除
void asort()按升序对数组进行排序 排列后保留原来的索引关系
integer ksort() 按索引值升序进行排列
usort(数组,方法名)按用户自定义方法进行排序
array_multisort() 一次对多个数组进行排序
natsort() 按自然顺序排序,排序后保留原有的索引关系
natcasesort() 自然排序,不区分大小写

6、数组的反向排序
rsort() 对数组元素按降序排列
arsort()
krsort()

7、对数组进行重新排序
boolean shuffle() 对数组进行随机排列
array array_reverse() 将数组中的元素逆置
array array_flip() 将数组中的索引与其元素值兑换

8、数组的遍历
current() 获取数组中当前指针所指的元素值
next()将数组的指针向后移动一位,返回移动后指针所指向的元素的元素值
prev()将数组的指针向前移动一位,返回移动后指针所指向的元素的元素值
reset()指针设置回数组的起始位置
end() 将指针移动到数组的最后一个元素处
each()返回数组中当前指针所指向的“索引/元素值”对,并将数组指针向后移动一位
返回一个包含4个元素的数组,且该数组的索引分别为0,key,1,value
key() 返回数组当前指针所指向的索引值
array_walk()以相同的方式对数组中的每一个元素进行处理
array_reduce() 将自定义函数依次应用于数组的每个元素
9、其他的数组操作函数
list()从一个数组中一次提取多个值,并同时赋值给多个变量
count()/sizeof()计算数组中元素的个数

六、PHP中的字符串
1、访问字符串中的字符
字符串的三种定义方式:单引号、双引号和Heredoc方式
可以将字符串视为数组来处理。$test="hello"; $test{0}="h";推荐使用大括号,以免与数组混淆

2、字符串的格式化
字符串的格式化处理通常包括:去除字符串中多余的空格、大小写转换、加入和删除反斜杠和HTML格式化四部分
去除空格和其他符号

string trim(待处理的字符串,过滤字符串)
如果不指定过滤字符串,则默认去掉空格、Tab字符、换行符、回车符、字符串结束符和垂直制表符
可以使用“..”指定需要去除的一个范围,例如“a..f” 表示去掉a、b、c、d、e和f
只对字符串首尾字符进行过滤,即使指定了过滤字符串,字符串中间部分也不会参与过滤
string lrtim(待处理的字符串,过滤字符串)
去除字符串左边的空格和其他特殊字符
其他同trim()

string rtrim(待处理的字符串,过滤字符串),别名函数chop()
去除字符串右边的空格和其他特殊字符
其他同trim()

对字符串大小写的转换
strtolower(待处理的字符串)将指定字符串中的所有字符转换为小写
strtoupper(待处理的字符串)将指定字符串中的所有字符转换为大写
ucfirst(待处理的字符串)检查指定的字符串,如果指定字符串的第一个字符是字母,则将其转换为大写
ucword(待处理的字符串)将指定字符串中的每个单词的首字母转换为大写

加入和删除反斜杠
在将任何字符串保存到数据库中之前,应该使用addslashes()函数添加反斜杠;
在显示用户数据之前,应该调用stripslashes()函数去除反斜杠
addslashes(待处理的字符串)添加反斜杠
stripslashes(待处理的字符串)删除反斜杠

HTML格式化
nl2br(待处理的字符串)可以将字符串中的换行符转换成HTML中的标签"
",从而在浏览器中实现换行
htmlspecialchars(待处理的字符串,是否转换双引号和单引号,字符集)
可以使一些特殊的字符被当成普通的文本输出,而不会再进行HTML解析
第二个参数:默认只对双引号进行转换,ENT_COMPAT只转换双引号 ENT_QUOTES都转换

ENT_NOQUOTES 不进行转换
第三个参数:指定了转换时所使用的字符集,默认为ISO-8859-1
hemlentities(待处理的字符串,是否转换双引号和单引号,字符集)
功能同上,但可以转义更多的特殊字符
heml_entity_decode(待处理的字符串,是否转换双引号和单引号,字符集)
可以对显示字符串进行反向转换,转换后的字符串能够按HTML标签进行解析
strip_tags(待处理的字符串,允许保留的HTML标签)
去除所有的HTML和PHP标记

3、字符串的连接和分割
explode(分隔符,字符串,被分割的字符串片断的数量)按指定的分隔符将一个字符串分割
如果分隔符是字符串,函数会根据字符串中的每个字符来进行分割,而不会根据整个分割字符串来分割
implode(连接符,需要连接成字符串的数组)将一些字符串通过指定的连接符连接成一个字符串
join(连接符,需要连接成字符串的数组)功能同implode()
substr(字符串,开始位置,提取长度)从某个字符串中提取一部分子字符串
开始位置为负,将得到一个从原字符串尾部开始,长度为该负数绝对值的子字符串
提取长度为负,子字符串取到倒数第“length”个字符前
这个不难理解,-就表示从后面开始
strtok(字符串,分隔符)从指定字符串中取出一个字符串片段
如果分隔符是字符串,函数会根据字符串中的第一个字符来进行分割,而不会根据整个字符串来分割
在调用该函数对字符串进行连续分割时,只有第一个分割时需要指定参数str,第一个分割后,系统会自动
记录字符串及第一个分割后的指针位置,继续调用该函数,则会继续从该字符串指针的当前位置进行分割
。如果希望重置指针到字符串起始位置,只需将字符串重新作为参数传递给该函数即可。
split(分隔符,字符串,返回字符串个数)将一个字符串按指定的分隔符分解为多个子字符串

4、字符串的比较
可以使用==直接对字符串进行比较
strcmp(字符串1,字符串2)按字典顺序,排在后面的大。如果相等,返回0,如果str1大于str2,返回正数,否则负数
区分大小写
strcasecmp(字符串1,字符串2)同上,不区分大小写
strnatcmp(字符串1,字符串2)按自然顺序进行字符串比较,等于返回0,大于返回正数,小于返回负数,区分大小写
strnatcasecmp(字符串1,字符串2)按自然顺序进行比较,不区分大小写

5、字符串的查找和替换
strstr(被查找的字符串,要查找的关键字)在一个字符串中查找匹配的字符串或字符,如果查找到,则返回从str字符中该key开始到字符串结尾的子字符串,如果没有查到,则返回false,如果不止一个,则返回从第一个匹配到结 尾的子字符串
strisstr()功能同上,区别,该函数不区分大小写
strchr(被查找的字符串,要查找的关键字)在一个字符串中查找要匹配的子字符串或字符,该函数从字符串末端开始查找,如果找到一个,则返回从该key开始到字符串结尾的子字符串,如果多于一个,则返回从尾端开始的第一个匹配,如果没有匹配,则返回false
strpos(要查找的字符串,要查找的子字符串或字符,从原始字符串的第offset个字符开始查找)
 如果找到一个,则返回位置,从0开始,如果不止一个,返回第一个,如果没有,返回flase
 offset不能为负,否则无法开始查找
strrpos(要超找的字符串,要查找的关键字,从原始字符串的第offset个字符开始查找)
 从字符串末端开始查找,如果不止一个,返回倒数第一个匹配
strripos(要查找的字符串,要查找的关键字,从原始字符串的第offset个字符开始查找)
 功能同strrpos(),区别不区分大小写
stripos(要查找的字符串,要查找的关键字,从原始字符串的第offset个字符开始查找)
 功能同strpos()区别不区分大小写
str_replace(被替换的字符串或数组,替换后的字符串或数组,源字符串或数组,被替换的次数)
searchreplacesubject
把subject中的search替换为replace
如果search是数组,replace是字符串,在replace会替换search数组中的所有元素
如果search和replace都是数组,在replace中的元素会替换search中对应的元素
如果search数组中的元素个数多余replace,则多余的search数组中的元素会被空字符串替换
substr_replace(被操作的原始字符串,用于替换的字符串,要被替换的原始字符串的起始位置,被替换的原始字符串 中字符的个数)用于在指定位置中查找和替换字符串中特定的子字符串
起始位置:如果为正,从头开始计算,如果为负,从尾开始计算
长度:如果为正,表示从start开始的连续length个字符被替换,
如果为负,表示从start开始到倒数第length个字符被替换
str_ireplace()功能同substr_replace(),但是该函数不区分大小写

6、其他常用字符串函数
strlen(字符串)用于计算指定字符串的长度
md5(字符串,标志)将一个字符串进行MD5算法加密
第二个参数如果为true,将返回一个16位的二进制数;如果为false,则返回一个32位的十六进制字符串,默认为false

七、PHP中的面向对象编程技术
1、对象的特性
封装:对象是封装的最基本单位,是以对象名封装的数据结构以及可施加在这些数据上的操作的集合。
就像一个盒子,我们不需要知道盒子里面有什么东西,只需知道它有哪些用途即可。
继承:PHP不支持多重继承,继承本质上就是代码重用,继承是指子类可以自动地拥有父类的全部特性,而无须从零开始构建。
多态:能够使用类的上下文来重新定义或改变类的行为。多态性使得对象能够根据所得到的参数决定具体执行哪个行为或方法,而对外却可以提供统一的接口。

2、类的结构
class 类名
{
//定义属性,使用关键字var
 var $var1;
 var $var2;
 ...
 //定义方法,使用关键字function
 function method1(...){...}
 function method2(...){...}
 ...
} 不可以将一个类分开定义到多个PHP标记对中,更不可以分开定义到多个文件中。

3、类的实例化
使用关键字new来创建类的实例
$实例名=new 类名;

4、使用类的属性
若要使用类中定义的属性或方法,只需使用运算符"->"即可。如果在类定义时需要访问类内部自身定义的属性或方法,则需要使用$this指针。
一般来说,从类的外部直接访问类的属性存在一定的风险,为此PHP对于访问类属性提供了一些保护措施。__set(),__get(),当视图引用一个
类中不存在的属性时,就会调用这些方法进行相应的处理。

5、类的访问控制 控制类的属性和方 法
如果对类的属性指定了访问控制类型,则关键字var需省略
public 在类的内部和外部都可以访问。该选项是默认选项。
使用“::”运算符可以在没有创建任何类的实例的情况下访问类中的函数或者变量
格式如下:类名::函数类名::变量
private 只能在类的内部进行访问
protected 只能在该类和其子类中使用

6、构造函数
构造函数在一个类被实例化时自动调用。PHP不支持多个构造函数。
构造函数的语法格式如下:function __construct(参数1,参数2,...){}

7、析构函数
析构函数会在类对象被销毁前调用,通常用来设定对象被销毁前需要完成的一些操作。销毁对象最简单的方法是直接对其赋值NULL
析构函数语法:function __destruct(){}
脚本在执行结束时,PHP会自动销毁内存中的所有对象。因此,对于一般的类对象不需要显式地定义析构函数。
但是如果类对象在实例化时创建了不太容易销毁的数据,如果数据存储在数据库中而不是内存中,就应当定义一个析构函数,在类
对象销毁时使这些数据能够正常被销毁。

8、静态属性和方法
静态属性和方法需要使用关键字“self::”来引用,其他介绍前文已有

9、类运算符instanceof
可以判断一个对象是否是一个类的实例

10、继承已有的类
继承使用关键字extend

11、类的重载
重载是指在子类中再次定义与父类相同的属性和方法。类的重载使得在子类中可以给某个属性赋予一个与其父类中不相同的值,
也可以给某个方法指定一个与其父类中不相同的功能。

12、访问父类中的属性和方法
一个子类可以通过继承和重载得到父类中的属性和方法,并能够重写所继承的属性和方法。但有些时候,在子类中会需要直接
调用父类中的方法。在PHP中可以使用关键字“parent::”来实现对父类中属性和方法的访问。

13、使用final关键字禁止继承和重载
当在一个函数定义前面使用关键字“final”时,表示该函数将不能被任何子类重载。
如果不希望让一个类继承,只需在定义类时为其添加“final”关键字
如果一个类中的属性或方法被指定为“private”,则该属性或方法将不能被继承
如果一个类中的属性或方法被指定为“protected”,则该属性或方法可以被子类继承,但不能在类外部直接访问
如果一个类中的属性或方法被指定为“public”,则该属性或方法不仅可以被子类继承,而且在任何地方都可以被访问

14、抽象类和抽象方法
抽象类是不能实例化的类,只能作为其他类的父类使用。所以继承抽象类的子类都必须实现所有的抽象方法。
在PHP中使用关键字“abstract”定义一个抽象类和方法。

15、接口
接口是一种特殊的抽象类,这种抽象类中通常只包含抽象方法,不定义属性。属性的定义和抽象方法的实现交给实现接口的类来完成。
定义接口使用关键字“interface” 实现接口使用关键字“implements”

16、实现多个接口
PHP中的类不允许多重继承,但允许实现多个接口

17、对象的赋值
目标对象 = clone 原对象; 复制后两个对象完全一样,但互不干扰
在PHP中还可以使用__clone()方法调整对象赋值的行为。默认情况下,该函数将建立一个与原对象拥有相同属性和方法的对象,如果希望
在赋值后改变原对象中的某些内容,只需在方法中重写原对象中的相应的属性和方法即可。该方法可以使用$this指针

18、自动加载类
PHP专门提供了__autoload()函数,来自动加载所需的类。
在需要加载时,该函数会自动被调用,同时类名会以参数的形式传递给__autoload()函数

19、处理不存在方法调用
当调用类中一个不存在的方法将会产生致命错误,PHP提供了__call()方法可以对这种类型的错误进行处理。

20. Serialization of objects
In order to facilitate the transmission and storage of variables, variables are usually converted into the byte stream form of strings before they are transmitted and stored. When these variables need to be used, they are Restore to
the original variable, this process becomes serialization and deserialization.
In order to facilitate the transmission and storage of class objects, serialization and deserialization can also be performed in alignment. The function serialize() is used in PHP to serialize an object. Its parameter is the object name, and the return value is the string obtained after serialization. Deserialization uses the unserialize() function, whose parameter is a string and returns the original object.
When the object is serialized, it will automatically call a method named __sleep() to complete some things before going to bed. This method does not receive any parameters, but will return an array.
specifies the required sequence in the array. ized attributes, attributes that are not included will be ignored during serialization. If the __sleep() method is not specified, PHP will serialize all properties.
When the object is deserialized, it will automatically call a method named __wakeup() to perform some actions when the object wakes up.

8. PHP access MySQL database
1. Basic steps of database operation
Link to the database server mysql_connect (MySQL server host name, user name, password);
Select a database mysql_select_db (database name, resource identification);
operate the database mysql_query (database statement, resource identification);
process data records mysql_fetch_row (resource identification);

2. Connect and close the database

$connect = mysql_connect("localhost","root","123456");
After completing the operation on the database, mysql_connect() will automatically disconnect. You can also explicitly use mysql_close() to disconnect.
Mysql_pconnect() establishes a persistent connection. Once the connection is established, the connection will be placed in the connection pool. Even if the database operation is completed,
the connection will not be automatically closed, but will be reserved for future use. Even if the mysql_close() function is used, the connection established
by the function mysql_pconnect() cannot be closed.
After completing the database operation, the connection should be closed. But closing is not necessary, because PHP has a garbage collection function and will automatically handle unused connections. Of course, the connection can be closed explicitly. Closing the connection requires a resource identification number. If not specified, the most recently opened connection will be closed by default.
mysql_close(resource identification number);

3. Select database

Select database mysql_select_db (database name, resource identification number);


4. Query the database

The functions that perform query operations include mysql_query() and mysql_db_query(). The function mysql_query() directly executes a SQL statement,

and the function mysql_db_query() can execute a SQL statement on the specified database.
mysql_query (SQL statement, resource identification number):
If the SQL statement is a query statement such as select, show, explain, describe, etc., a resource identification number will be returned when the execution is successful, and false will be returned when it fails
If SQL statements are other statements (insert, update, delete, etc.) that return true when successful and false when failed.
mysql_db_query (database name, SQL statement, resource identification number) has the same function as above. This sentence is equivalent to the combination of mysql|_slect_db() and mysql_query().

5. Obtain and display data

mysql_fetch_row (resource identification number) returns the current record row in the query result set in the form of an array, and moves the current row pointer in the result set down one row after the call

mysql_fetch_array( Resource identification number) returns the current record row in the query result set in the form of an array, and moves the current row in the result set down one row after the call
NOTE: The result array returned by mysql_fetch_row() can only be accessed using numeric subscripts , the result array returned by mysql_fetch_array() can use array subscripts,
can also be accessed using field names, but mysql_fetch_row() can get the fastest execution speed
mysql_fetch_assoc (resource identification number) is returned in the form of an associative array Query the current record row in the result set, and move the current row pointer in the result set down one row after the call.
mysql_fetch_object (resource identification number) returns the current record row in the query result set in the form of an object, and moves it after use. The current row pointer in the result set moves down one row
The mysql_result (resource identification number, row number, field) field can use a numeric index or a field name. The numeric index subscript starts from 0
This function returns the value of the specified field of the specified record row
mysql_num_rows (resource identification number) returns the number of record rows that meet the query conditions
mysql_field_seek (resource identification number, positioned row number) to locate the row to be queried
mysql_fetch_length (resource identification number) is returned in the form of a numerical index array, and each array element value corresponds to the number of bytes of a field

6. Data addition, deletion, modification and related operations

Use mysql_query() to complete data addition, deletion and modification operations

int mysql_affected_rows (resource identification number) returns the number of records affected by insert, update and delete
mysql_num_rows () is only valid for select statements


www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/327510.htmlTechArticlePHP Basics 1. First introduction to PHP PHP is an embedded language mixed with HTML. 1. PHP tag The default tag?php? Short tag??, you need to turn on the short_open_tag option in php.ini. Short tag and other...
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template