php基础函数(部分已记录)

学习了这么久的php,感觉基础知识不是特别牢靠,手敲一遍所有基础知识,加强记忆.

一,PHP基础语法

变量,常量

严格区分大小写,但内置结构或关键字无所谓(echo);

命名:不能以数字,空格, .来开头,但是可以有汉字, eg: $变量="a";

可变变量:$a='aa'; , $$a="bb";, 则 $aa='bb';

引用赋值:$a="aa" ;$b=&$a; ,则改变$a的值,$b也变化. 不同:存储结构是分开的,即使unset($a),$b还在(区分C语言)

变量类型:int str array bool object float resource null

全局变量: 全局变量本身就是静态存储方式,所有的全局变量都是静态变量

$_SESSION, $_COOKIE,$_POST,$_REQUEST,$_FILES,$_EVN,$_GET

静态变量:

static [详细见下图]

静态方法: 静态方法不需要所在的类被实例化就可以直接使用,Math::Max($a,$b);(未实例化Math类直接调用静态方法Max)

常量:

define("NAME",$value,[TRUE]); //如果第三个参数为true,则不区分大小写,默认是区分大小写.

预定义常量:

PHP_OS="WINDOWS"; PHP_VERSION="BANBEN";

E_ERROR=1 ,错误,导致脚本终止;E_WARNING=2,警告,脚本不终止;E_NOTICE=8,非关键性错误

魔术常量:

{全是返回物理路径,即使被包含输出,输出的也是源头代码的信息,非当前包含的文件的信息,如 $_SERVER区分}

_FILE_ 当前文件名称

_CLASS_ 当前类名称

_FUNCTION_ 当前函数名称

_METHOD_ 当前方法名称.

_LINE_ 当前行数名称

总结:

(全局)常量:(默认常量就是全局的)存储在(静态)数据段

变量

全局变量:存储在静态数据段

局部变量:存储在栈中

静态变量:(不管全局/局部)存储在静态数据段中

类型转换

1.setType($a);//返回变量类型

2.$b=(int)$a;//把变量$a转换成整形赋给b;

$b=intval($a);

3.is_int($b);//判断$b是否为整形,返回bool值

类型转换:

(int),(bool),(string),(array),(object())

is_bool/float/string/array/object/resource/null/

is_callable();//判断是否有效函数名称

运算符

算数运算符:+ - * / % ++ --

连接运算符: .

赋值运算符: =,+=,-=,*=,/=,%=,.=

比较运算符: >,<,==,===,!=,<>,!==

逻辑运算符: and,&&, ; or, || ; not,!; xor(逻辑异或,两边不同返回TRUE,相同返回FALSE)

位运算符 : & ; | ; ^ (异或,不同返回1); ~(非运算符,1.0取反); <<左移 ,右边空出的补0; >>右移左边空出的补0

其他运算符:

?; 三目运算符 (本人使用的相当多)

@忽略错误

=>数组下标用

->调用对象的属性或方法

instanceof 类型运算符,示例代码如下

流程控制

1.if(){}else{}.

2.while(){};

3.do{}while();

4.for($a=1;$a<10;$a++){}

5.switch($a){

case 1:echo 1 ;break;

case 2:echo 2:break;

default: echo"this is default value";

}

continue , break; exit 区别;

continue,跳过当前的这一次循环,循环仍旧继续.

break 直接跳出当前循环 循环直接终止;

exit; 直接终止脚本 这行被执行 直接脚本就终止.

函数

命名:遵循变量命名规则即可,函数不可一被重载.

作用:函数实现了结构化编程,提高了代码的可维护性.

全局变量:整个脚本中皆可以使用

局部变量:只有在函数体内只用,执行完毕函数自动释放.

|-->分为静态存储类型和动态存储类型;static $a为静态变量,函数执行完后,不会被释放

函数内局部变量变成全局变量: 1.global; 2.$GLOBAL['']使用全局数组

几种类型函数

1.引用参数的函数 :function(&$a){} //函数内对形参$a的操作,会对实参也造成影响 eg:sort()

2.默认参数的函数: function($a=0){} //没有参数传入的话,默认$a=0

3.可变参数个数的函数: function($a,$b$c...){}

//原理: 通过fun_get_args()函数,接受所有参数并返回一个数组来使用,所以可以有多个参数 EG:echo(),array_merge()

4.回调函数:

$fun="one"; function one(){ //code}

当调用$fun()的时候,就是在调用one()函数.call_user_func_array()

5.递归函数:

function test(){ test();}//在函数中再次调用函数,但注意死循环的问题,要有执行结束跳出.

二。PHP常用函数

常用函数:

echo();//输出一个字符串 如果不是字符串或者其他的东西会直接抛出一个error

print()// 有返回值, 打印指定的变量或字符串 如果传输失败或者没有输出,它返回falase

var_dump() 同上

var_export() 有返回值,翻译一个语法正确的php代码.

printf();//类似于C语言的格式 printf('my name is %').打印出来.

sprintf();同上面一样 但是不打印,而是返回格式化后的文字.

数组函数:

1.排序类: [1.无返回值,传值引用,就直接对原数组进行了修改]

按V:sort,rsort,asort,arsort,

按K:ksort,krsort

按字母:natsort();//区分大小写的排序

natcasesort();//不区分大小写的排序, 当遇到字符完全一样,按照数字排 eg: FILE1,FILE2, 这两个字符相同,再按照数字1<2排,所以结果 FILE1,FILE2

回调:usort($arr,"strnatcmp")//回调类的排序,把$arr数组里的每一个元素丢到strnatcmp()[非自然数排序]处理【返回新的排序数组】

规律:

没有"k",排序按照【value】排序,排序有"a"的表示要保留KEY,有"r"的倒序排

有“k”,排序按照【KEY】排序,有"r"的倒序排

有"u"的,表示要丢到回调函数中处理的

2.键值操作类: [该类型的函数全部都有返回值,&没有在原来的参数上修改]

1.array_values($arr); //获取$arr中的值重排,去掉下标[返回值索引数组]

2.array_keys($arr[,'str',true]) //获取$arr中所有字符是'str'的下表,形成一个新的索引数组,true表示区分大小写[返回新索引数组]

3.array_search('is',$arr[true])//返回值'is'在$arr中的key,找不到返回fales, true表示严格按照类型(8,"8") 【返回第一个匹配值】

4.in_array("str",$arr);//判断"str",在$arr中是否存在,【返回BOOL】

5.is_array($arr);//判断$arr是否是一个数组【返回BOOL】

6.array_key_exists($key,$arr); //查询$arr中是否有$key 【返回BOOL】

7.array_flip($arr);//交换键位,如有重复,后来居上,【返回新的数组】

8.array_reverse($arr,[true|false]);//数组顺序反转, 【返回新关联/索引数组】

9.array_column(array(),'name'[,name_two])__返回数组中指定的name列[可选参数,如果有返回name=>name_two的形式] 【返回一维数组】

3.元素个数和唯一性

1.array_unique($arr);//去掉$arr中的重复值,重复的保留第一个值,【返回数组,键值保留】

2.array_count_values($arr);//统计数组值出现的次数,【返回数组,KEY为原来数组的值,VALUE为统计的次数】

3.count($arr[,1]);//统计$arr元素个数,参数1表示统计多维数组开启,默认0为关闭 【返回统计个数】

4.回调函数

1.array_filter($arr,"function");//把$arr放到闭包函数function中处理,【返回判断为TRUE的数据组成新的数组,键值保留】

2.array_walk($arr,"function"[,"$data"]);//把$arr放到function(&$v,$k,$data)中处理【返回值为bool】

3.array_map(“function”,$arr,$arr2,$arr3);//把所有数组返回到回调函数统一处理,【返回数组】

4.array_reduce($arr,myfunction[,initial]);//把一纬数组$arr中的值依次传到自定义函数myfunction($v1,$v2)的v2上,v1为累加值类似于(.=),[如果有initial,先把其当v1穿进去]【返回字符串】

5.拆分,合并,分解,结合数组

1.array_slice($arr,1[,2]);//在$arr中,从第二个开始取,返回两个值 【返回新数组(对原数组无影响),】

2.array_splice($arr,1[,2,"aaa","bbb"]);//删除或替换,从$arr第二个开始取,删除或替换2个值,【返回值为新数组,拆掉原数组】

3.array_combine($arr1,$arr2)// 数组1为KEY,数组2为VALUES结合城新的索引数组.

4.array_merge($arr1,$arr2,$arr3);//数组进行合并,保留键值,有重复,后来者居上【返回新数组】

array_merge发现有key值相同的,取后者;

$arr1+$arr2 发现有key值相同的,取前者,第二个重复的值丢弃.

5.array_intersect($arr1,$arr2)//返回两个数组的交集,键值不变.

6.array_diff($arr1,$arr2)//返回两个数组的差集,返回的值为第一个数组的值,键值不变.

7.array_chunk($arr,2)//分割数组,把$arr 按照【2个为一组】均等分割【返回一个二维数组】

6.数组的数据结构. [无返回值],传值引用,就直接对原数组进行了修改.

1.array_shift($arr)//从开头,删除数组第一个元素

2.array_unshift($arr,"one","two")//从开头,添加元素

3.array_pop($arr)//从结尾,删除数组最后一个元素

4.array_push($arr,"aaa");//从结尾,添加元素

6.current($arr);//返回数组中的当前单元,比如是关联数组是不知道下标,可以输出当前数组的办法来解决

7.key($arr)//返回当前指针指向元素的键值

8.next($arr)//当前指针下移

9.pre($arr)//当前指针上移

10.end($arr)//指针指到最后

11.reset($arr)//指针回归到开头

12.unset($arr)//销毁此数组

7.其他

1.array_rand($arr,2);//随机返回两个$arr数组当中的key 【返回值为值或者数组】

2.shuffle($arr);//随机的重组$arr,顺序变乱【返回新数组,保留键值】

3.array_sum($arr);//返回$arr的value的和[返回一一个值]

4.range(0,10,2,);//快速创建0,10的数组,间隔为2,所以有5个值【返回新索引数组】

5.http_build_query($arr);//把关联数组转换城一个经过urlencode加密的url;

字符串函数

返回bool

1.isset($a)//$a=null或不存在,返回false,反之为true

2.empty($a)//当$a=null //不存在时 返回true 反之为false

返回值为自字符

1.substr(字符串,开始地方.[返回字符串的长度]);//截取字符串的一部分,第一个字符位置为0

2.string_replace($start,$out,$str)//把$str中的 $strat替换成$out并返回

3.substr_count($str,"is",[,5,10]);//从第5个开始 搜索is在$str中出现的次数, 【返回次数】

4.strstr($email)//从头开始搜索,无true返回@后边字符,有true返回@前边的字符[strrchr对比]

5strlen($string);成功则返回字符串$string的长度.

文本处理类

1.strtoupper($str)//字母全转为大写【返回全大写字符串】

2.strtolower()//字母全转为小写【返回全小写字符串】

3.strtotime('2015-10-10 10:10:10');//指定时间转换为时间戳【返回时间戳】

4.str_pad($str,length,[---,STR_PAD_BOTH]); //在$str的两边填补“---“,注意,length若小于$str长度,不填补

5.trim($str[,"a",STR_PAD_BOTH])// 去除两边/左/右的空白或"a",默认是空白,或自定义字符

6.floatval("123.45aa")//=》获取变量的浮点值【123.45】

7.ucfirst()//整个$str首字母大写

8.ucword()//$str每个单词首字母大写

HTML类处理

1.htmlspecialchars($str)//函数把【预定义字符】转换为【 HTML 实体】,&转换成&

htmlspecialchars_decode($str);//把【HTML实体】转换成【预定义字符】,&转换成&

2.htmlentities($str);,函数把【预定义字符】转换为【 HTML 实体】,&转换成&,有乱码问题,注意第二第三个参数,若编码不正确,会在实体化时把信息丢失

html_entity_decode($str)////把【HTML实体】转换成【预定义字符】,&转换成&, > 转成 <

3.addslashes($html); //添加转义字符“/”

stripslashes($html); //删除转义字符“/”

4.strip_tags($html); //去除HTML标签

5.nl2br($str) //在$str中的换行/n前插入 ,因为\n在源码可以换行,但是在浏览器窗口不行,有这个就可以

6.iconv( from_charset ; to_charset,$str); //转化字符格式 $file_name = iconv("gb2312","utf-8",$file_name);

正则函数[原则,能用字符串函数解决不用正则,速度问题]

字符串的匹配查找

1.preg_match($pattern,$subject,$arr);//按正则$pattern处理$subject,第一次匹配结果返回到数组中【函数的返回值为匹配次数】

2.preg_match_all($pattern,$subject,$arr)//按正则$pattern处理$subject,全部匹配结果返回到数组中【函数的返回值为匹配次数】

3.strstr($str,"@"[,true]);

4.strpos,strrpos,substr($str,position)//联合使用

字符串的替换

1.preg_replace($pattenr,$replace,$str);//【强大的字符串处理函数】

在$str中,把$parrern匹配的值替换成$replcae【返回值为处理后的字符串】

2.str_replace($str,"aaa","bbb");//把$str中的aaa换成bbb

字符串的分割和链接

1.preg_split($pattern,$str);通过一个正则表达式分隔字符串【返回值为数组】

举例:$keywords = preg_split("/[\s,]+/", "hypertext language, programming");

结果Array([0] => hypertext,[1] => language[2] => programming)

2.explode(",",$str[,$limit_num]);//把$str按照","分割成一个数组[可选参数为返回数组的元素个数]【返回一个分割后的数组】

3.impolde("+",$arr);//把$arr里的元素按照“+”链接成一个字符

文件处理函数

[$file=c://php/index.php]

基础函数

1.file_exists($file);//文件是否存在, [true/false]

2.filesize($file)//返回文件的大小;[大小字节/出错false]

3.is_readale($file);//是否可读 [返回bool]

4.is_writeable($file);//是否可写[返回bool]

5.is_executable($file);//是否可执行[返回bool]

6.filemtime($file);//文件创建时间[时间戳]

7.filemtime($file);/文件修改时间[时间戳]

8.filatime($file);//文件访问时间[时间戳]

9.stat($file);//返回文件的大部分信息[文件信息数组]

目录的基本操作

1.basename($file)//返回文件名,index.php

2.dirname($file)//返回文件的路径,c://php/

3.pathinfo($file)//返回文件路径的所有信息

目录复制,删除,统计大小使用的总结:

本质:依靠递归思想,对目录的循环遍历,

日记本

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!

赞赏支持
被以下专题收入,发现更多相似内容