您的位置:首页 > 编程语言 > PHP开发

PHP快速学习总结

2015-08-03 11:06 531 查看
《php+ajax完全自学手册》

1.php中数据类型有整型、浮点型、字符型、布尔型以及两个特殊的类型对象和数组。

2.php代码中echo作为输出语句,“.”作为连接符

Eg: <?php

Echo “当前php版本为”.PHP_VERSION;

?>

3.php中常量分为预定义常量和自定义常量,预定义常量是PHP系统事先定义的,可以直接使用,快速获取相关内容,提高工作效率。

get_defined_constants()函数可以获取系统中所有的预定义常量,eg:PHP_VERSION,PHP_OS,PHP_SAPI,PHP_INT_MAX,PHP_INT_SIZE,DEFAULT_INCLUDE_PATH,__LINE__,__FILE__,__FUNCTION__,__CLASS__,__METHOD__.

4.自定义常量需要通过使用define()函数来实现对常量的定义。Eg:define(“year”,”2007”);常量对大小写敏感,被定义之后不能取消定义吗,也不能改变定义的值。常量只能是字符型、整型、浮点型和布尔型这4种类型。

5.变量值可以改变,也分为预定义变量和自定义变量。变量包含所有的6种类型。

常用预定义变量如下图:

自定义变量:$var=100;是用一个美元符号加变量名,变量大小写不敏感。

Php对变量赋值有两种方式,一种是传值赋值,就是把表达式的值直接赋给变量,如$var = “php”;还有是引用赋值,如$var1 = &$var;这种方式将两个变量值联系在一起,改变新变量的值就改变原始变量的值。使用引用变量时,只有有名字的变量才能进行引用赋值,如果将一个表达式或者函数用引用赋值的方式赋值给变量会出错。Php中统一使用字符型变量来定义单独的字符或字符串。

Php中可通过settype(mixed var,string type)来对变量进行强制类型转化,将名称为var的变量转化成type类型。type可以是boolean,integer,float,string,array,object,null.

成功则返回true,反之false。Eg:$var = 1;settype(var,string);

6.变量的作用域:分为全局变量和局部变量,全局变量指在程序运行期间都能使用的变量,局部变量则只有在当前函数或过程中有效。

全局变量系统会在内存中保留一块全局变量的区域,区分大小写,可以通过$GLOBALS[“变量名”]调用。

7.数组变量:定义数组的两种方法:一是直接给数据每个元素赋值,如$arr[“key”] = value;或者对array()函数定义一个数组,如$arr = array(11,12,”a”=>”hello”);数组键为字符时需要在键上加引号,数字则不需要。一个数组中的元素类型可以不同。print_r()为输出函数,print_r($arr);

获取数组元素:$arr[key];直接采用$array[key]=value的方式可以动态为数组添加元素。不给出键的话系统会自动为未给出键的元素赋数字键。多维数组,可以用$arr[a][0]=”a0”;$arr[a][1]=”a1”;$arr[b][0]...的方式,也可以$arr = array(“a”=>array(1,2),”b”=>array(3,4));的方式。

8.运算符与表达式:

算术运算符包括加减乘除,求余和取反。除号总是返回浮点数,即使是两个整数。求余在$a%$b的$a为负数时结果为负。赋值运算符=。$b.= “world”;表示的是$b=$b.”world”;位运算符包括&,|,^,~,<<,>>。比较运算符包括==,===(全等,值和类型都相同),!=,<>(等价于!=),!==(不全等),<,>,<=,>=。数值与字符比较时总是数值大于字符;字符与字符比较时,按照ASCII码后面的大于前面。数组大于数值。三木运算符?: 。错误控制运算符@,把这个运算符放在一个PHP表达式之前,该表达式产生的任何错误信息都会被忽略掉。它只对表达式有效,可以放在变量、函数和include()调用、常量之前,不能放在函数或类的定义之前,也不能用于if,for和each的条件结构之前。执行运算符`,执行操作系统命令,效果与shell_exec()相同。该运算符在安全模式或者关闭了shell_exec()时是无效的。递增递减运算符++,--可以用于字母,但是只能递增,只支持纯字母(a~z和A~Z)。逻辑运算符and(&&),or(||),xor,!。字符串运算符为.用于把多个字符串连接起来。数组运算符+(联合,把右边的数组加到左边数组的后面,重复的键值不会被覆盖,只是加入了原数组中没有的键值对),==,===,!=,<>,!==。比较两个数组是否相等时只要求有相同的键值,全等则要求顺序也相同。类型运算符用于类与对象操作的,instanceof,判断对象与类的关系。

9.流程控制:用户使用if...else或者switch case多重判断时为了加快程序的执行效率,最好把出现机率高德判断条件放在前面。

10.php中的函数:

自定义函数:

function【关键字】 functionname(varname){return XX;}

系统函数:包括作为系统内核的系统函数和扩展模块库函数,系统内核函数可直接使用,扩展模型需要在PHP中加载类扩展才能正常使用,如MYSQL库函数。

函数的特殊定义:有条件定义与嵌套定义

有条件定义:在判断中使用函数定义,只有当判断条件为真时,函数定义过程才被执行,否则函数不能被定义更不能被调用。

Eg: 只有$var大于10时,函数f_1()才被定义,下面的程序会导致错误。

<?php

 f_1();

$var = 5;

if($var>10)

{

function f_1()

{

    echo “defined!”;

}

}

?>

嵌套定义:在一个函数的内部定义另一个函数,如果外层函数没有被执行,内层函数的定义过程也不会被执行;只有外层函数被执行了,内层函数才会被定义。

Eg:

<?php

 f_1(); //不调用f_2()不能被定义

 f_2();

function f_2()

{

function f_1()

{

    echo “defined!”;

}

}

?>

11.php中的数据处理:

abs(mixed var);

ceil,floor,round都用于取整,但是其中ceil采用进一法取整,返回不小于参数的下一个整数;floor用舍去法,返回不大于参数的下一个整数;round用四舍五入法。

float deg2rad(float number);//将角度转化成弧度值

sin,cos,tan,asin,acos,atan函数,参数是弧度值。

mixed max/min(number arg1,number arg2..);

mixed max/min(array a1,number arg1,array a2..); //可以将数组与数值比较,也可以数组与数组比较,比较个数无限。该函数会把非数值的字符串当成0,但如果这个是最大的数值那么会返回字符串。如果多个参数都为0且都是最大值,那么返回其中数值的0。若没有数值0,则返回字母表顺序最大的字符串。

int rand([int min,int max]);产生位于min与max之间的随机数,如果没有给参数,则返回0到RAND_MAX间的随机数。

进制转换函数:

计算指数函数float exp(float arg);返回e指定次方的值。e为2.718282。

float hypot(float x,float y);//求直角三角形斜边长度

bool is_finite(float val); //判断val是否是有限值

bool is_infinite(float val);

bool is_nan(float val); //判断是否是合法数值

float pi();//等价于M_PI

12.字符串的处理:

字符串输出函数列表

strlen()获取长度,该函数不能统计中文,会得不到正确的结果。中文用mb_strlen函数。

string substr(string string,int start[,int length])是截取字符串的函数,start为开始位置,截取length长度的。没有length则到原始串末尾。如果start为负数,那么从字符串尾部开始。length为负时,表示取倒数第length个字符。中文用mb_substr().

string strtr(string str,string from,string to);

string strtr(string str,array replace_pairs);

把str中的所有from转化成to,或者把str按照replace_pairs里面的key value方式来转换。如果from和to的长度不同,那么将以较短的那个参数的长度为准,并把长的转换成短的长度的参数。

mixed substr_replace(mixed string,string replacement,int start[,int length]);将string中的start,length的部分替换成replacement。

array explode(string separator,string string[,int limit]);字符串分割函数,将string按照separator进行分割,limit为最多返回数组元素的数量。

int strcasecmp(string str1,string str2);不区分大小写比较两个字符串,str1大于str2返回1.

int strnatcmp(string str1,string str2);区分大小写比较字符串。

string strtolower(string string);//string全部转换成小写

string strtoupper(string string);//转换成大写

string ucfirst(string string); //将第一个字母转换成大写

string ucwords(string string); //将字符串中的每一个单词的第一个字母转换成大写

string chr(int ascii);//将ascii转换成对应的字符

int ord(string str);//返回一个字符对应的ascii码

string join(string glue,array pieces);//将pieces中的内容按照glue分割连成字符串

string htmlspecialchars(string string[,int quote_style[,string charset]]); //将string中的html的原始符号转化。该函数可以有效地除去从网上搜集的文本内容的html格式。

string strrev(string string);//对字符串的内容进行颠倒

int substr_count(string haystack,string needle[,int offset[,int length]])//在haystack中查找needle出现的次数,offset是查找偏移量,length是查找长度。

int strripos(string haystack,string needle[,int offset]); //查找一个字符串needle在另一个字符串haystack中首次出现的位置。

string md5(string str[,bool raw_output]); //对strMD5加密

13.数组处理

int count(array array[,int mode]);//计算数组长度,mode为1时函数递归对数组计数

array array_keys(array input[,mixed search_value[,bool strict]]);//返回input的键值

array array_flip(a
e80b
rray trans);//交换trans的键值对

数据排序函数

 

用rsort和sort函数时,对数组排序的同时,将原有的字符键值改换成了数值键值会导致数组结构的丢失。

bool usort(array &array,callback cmp_function);//用户自定义排序函数,类似于C++泛型算法,用户自己定义排序比较函数cmp_function.

数组指针函数

 

array array_unique(array array);//移去数组中重复的值

array array_merge(array array1[,array array2[,....]]);//将多个数组合并成一个数组,当有相同的字符键值时,后面的覆盖前面。当是数值键值时添加到后面。

bool in_array(mixed needle,array haystack[,bool strict]);//判断haystack中是否有needle。

array array_count_values(array input);//统计所有值出现的次数,返回结果数组

14.目录与文件

bool mkdir(string pathname[,int mode[,bool recursive[,resource context]]]);//创建目录

bool rmdir(string dirname);//删除目录,与linux一样必须是空目录

使用目录时,先要用opendir打开目录句柄。

resource opendir(string path[,resource context]);

string readdir(resource dir_handle); //读取目录,返回目录中下一个文件的文件名

Array scandir(string directory[,int sorting_order[,resource context]);//返回directory指定目录的全部目录与文件内容。该函数不用事先打开目录,所有不用opendir函数,只需要目录名即可。

目录句柄被readdir操作之后会改变,可以用void rewinddir(resource dir_name);重置到目录的开头。

关闭目录void closedir(resource dir_name);

float disk_total_space(string diractory);//返回目录所在磁盘分区的大小

float disk_free_space(string diractory);//获取特定目录所在物理磁盘的可用大小

bool file_exists(string filename);//判断文件是否存在

resource fopen(string filename,string mode[,bool use_include_path[,resource zcontext]]); //打开文件获取文件句柄

文件打开模式

string fgetc(resource handle); //按字符读取文件内容

string fgets(int handle[,int length]);//按行读取文件

array file(string filename[,int use_include_path[,resource context]]);//不需要获取文件句柄,直接将文件所有内容读到数组变量中

string file_get_contents(string filename[,bool use_include_path[,resource context,[int offset[,int maxlen]]]]);//与file一样,但是结果返回到string中

int fwrite(resource handle,string string[,int length]); //将string写入到handle句柄的文件中

Bool rewind(rescource handle);//倒回文件的指针

Bool copy(string source,string dest);//把source复制到dest

Bool rename(string oldname,string newname[,resource context]);//重命名文件

Bool unlink(string filename);//删除文件

$_FILES包含用户上传文件的所有信息:

 

bool move_upload_file(string filename,string dest);//将用户上传的文件移动到dest位置

15.获取客户端服务器信息

预定义变量$_SERVER[“HTTP_USER_AGENT”]可以获取客户端的各项信息,包括浏览器信息,客户端操作系统信息等,也可以通过mixed get_browser([string user_agent[,bool return_array]]);//获取客户端浏览器类型

$_SERVER[“REMOTE_ADDR”]包含客户端的IP地址

bool phpinfo([int what]); //获取服务器所有信息

int time();//获取当前时间

string date(string format[,int timestamp]); //格式化返回一个指定日期

bool checkdate(int month,int day,int year);//检查指定日期是否合法

16.session和cookie

两者的区别:session是用户在浏览某网站时到关闭浏览器中维持的这段时间,用户的信息存储在服务器上。它的解决方案就是在php中定义全局变量,使得在一个session中的所有php脚本都有效。Cookie是存储在客户端,它记录了用户的id、密码浏览记录以及停留时间等信息。两者都是会话处理机制,用来储存私密信息,都有有效期的概念。但是cookie安全性较低。

session的使用:

在使用session之前都要先用bool session_start()函数,bool session_register(mixed name[,mixed..])注册session。session_unregister()可以取消session变量。bool session_destroy()关闭session相关的函数。$_SESSION[“sessionname”]可以用来获取和设置session值。当使用session_register()时,使用bool session_is_registered(string name);判断变量是否已经被注册。使用$_SESSION时,用bool isset()来判断变量是否定义,unset()来实现注销。String session_save_path([string path]);返回session的保存路径。

cookie的使用:

bool setcookie(string name[,string value[]]]]]);//定义cookie 

 

$_COOKIE来使用已经注册的cookie。在setcookie的时候可以在参数中设置cookie的生命周期。

17.类与对象

定义类用关键字class,为类定义属性用var关键字,方法用function关键字。调用类的属性与方法时需要使用符号“->”,属性名不再要“$”,因为对象变量前面会有一个$,php变量只允许一个美元符号。

类的继承:

class A{}

class B extends A{}

在子类中想要访问父类中的方法用parent::方法名(参数)。通过函数会重载。

一个类想要调用另一个类的属性和方法可以用类名::方法名或者属性名即可。

bool class_exists(string class_name[,bool autoload]); //判断类是否定义

array get_class_methods(string class_name);//返回类的方法名

array get_class_vars(string class_name);//返回类的属性

string get_class(object obj);//返回obj的所属类

bool is_a(object object,string class_name);//判断object是否是该类或者该类是该对象的父类则返回true。

bool method_exists(object object,string method_name);//检查方法是否存在在对象中

bool property_exists(mixed class,string property);//检查属性是否存在在类中

18.php的mysql操作

数据库连接函数mysql_connect返回一个句柄,mysql_close关闭数据库。

mysql_list_dbs返回当前可用的数据库信息,这个信息要通过mysql_fetch_array(),mysql_fetch_row(),mysql_num_rows()分条获取。mysql_query(string query[,resource link_identifier)用于具体执行数据库操作的函数,包括插入删除查询更新、创建数据库、表等。mysql_list_tables返回所有的数据表名。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: