PHP를 오랫동안 공부하다 보면 기본 지식, 특히 배열과 문자열 함수의 적용이 항상 불안정하다고 느껴집니다. 그러나 이러한 기본 지식은 매우 중요하므로 이 기사에서는 PHP의 몇 가지 일반적인 기능을 공유할 수 있기를 바랍니다. .
하나. PHP 기본 구문
변수, 상수
엄격하게 대/소문자를 구분하지만 내장 구조나 키워드는 중요하지 않습니다(에코)
이름 지정: 숫자, 공백,.으로 시작할 수 없지만 중국어 문자를 사용할 수 있습니다. 예: $variable= "aa";
변수 변수: a=′aa′;
a="bb";
aa="bb";
참고 과제: a="aa";
b=&a; 그런 다음 changechange
The a의 값, b도 변경을으로 변경합니다. 은 과 동일하지 않습니다 : 저장 매장 매듭 구조 는 포인트 가 의 를 엽니다. , 은 makeunset(
a), $b는 여전히 존재합니다(C 언어와 구별)
변수 유형: int str 배열 bool 객체 float 리소스 null
전역 변수: 전역 변수 자체는 정적 저장 방법이며 모든 전역 변수는 정적 변수입니다
_SESSION,
_COOKIE, _POST,
_GET, REQUEST,
_FILE S,$_EVN
정적 변수:
static [참조 자세한 내용은 아래 그림]
정적 메서드: 정적 메서드는 클래스를 인스턴스화하지 않고 직접 사용할 수 있습니다. Math::Max(a,
b); (정적 메서드 Max는 Math 클래스를 인스턴스화하지 않고 직접 호출됩니다.)
상수:
+ - 사용 사용 사용 사용 through‐through‐‐‐‐‐‐‐‐‐‐‐‐ps out of, PHP_OS="WINDOWS" ; PHP_VERSION = "version" e_error = 1, 오류가 발생하여 스크립트가 종료됩니다. e_warning = 2, 경고, 스크립트가 종료되지 않습니다. 출력에는 소스 코드 정보, 현재 포함되지 않은 파일 정보도 포함됩니다. $_SERVER】 __FILE__ 현재 파일 이름 __CLASS__ 현재 클래스 이름 __FUNCTION__의 현재 함수 이름__METHOD__ 현재 메서드 이름 __LINE__ , , ” 데이터 세그먼트 로컬 변수: 에 저장됨 스택 정적 변수: (전역/로컬에 관계없이) 정적 데이터 세그먼트에 저장됨
유형 변환
1.setType($a);//获取变量的类型 2.b=(int) a;//把$a转换为整形 b=intval( a); 3.is_int(b);//判断 b是否为整形,返回bool值 类型转换:(int),(bool),(float),(),(string),(),(array),(),(object); intval(),floatval();strval() 判断类型: is_bool/int/float/string/array/object/resource/null is_numberic();’//判断是否为任何类型的数字或者数组字符串 is_callable();//判断是否为有效函数名称 运算符 算数运算符:+ - * / % ++ – 连接运算符: . 赋值运算符: =, +=,-=,*=,/=,%=,.= 比较运算符:>,<,==,===,!= <>,!== 逻辑运算符: and,&& ; or,|| ; not,! ; xor(逻辑异或,两边不同返回TRUE,相同返回FALSE) 位运算符 : & ;|;^(异或,不同返回1);~(非运算符,1.0取反);<<左移,右边空出的补0;>>右移左边空出的补0 其他运算符: ?: 三目运算符 举例:a= bool?b: c; //若bool成立, a=b;否则 a=$c @ 忽略错误 =>数组下标用 ->调用对象值用 ·· 反引号为执行运算符?? instanceof 类型运算符 class ClassOne{} a=new ClassOne(); var_dump( a instanceof ClassOne );//返回true
Flow control
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 defaut value”; } continue,break;exit 区别: continue跳过当前循环,循环还在继续 break 跳出当前循环,循环终止 exit; 终止当前脚本,这行代码后边的代码不执行了就Function
이름 지정: 변수 이름 지정 규칙을 따르기만 하면 함수가 오버로드될 수 없습니다. 한 번, <br>
함수: 구조화된 프로그래밍을 구현하고 코드의 유지 관리성을 향상시키는 함수 전역 변수: 스크립트 전체에서 사용 가능 로컬 변수: 함수 본문 내에서만 사용되며, 이후에는 함수가 자동으로 해제됩니다. 실행 |—> 정적 저장형과 동적 저장형으로 나뉘는데, static $a는 함수가 실행된 후에 해제되지 않는 정적 변수입니다. 함수 전역 변수 내에서 로컬 변수 프로그래밍: 1. global ; 2.$GLOBAL[”] 전역 배열 사용다양한 유형의 함수 <br>
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(){} 当调用 fun()的时候,就是再调用one()函数,call_user_func_array() 5.递归函数:function test(){ test()}//在函数中再次调用函数,但注意死循环的问题,要有执行结束跳出2. PHP 공통 함수
공통 함수:
echo() [언어 구조]
print( )//[언어 구조] [반환값 있음] 전송에 실패하고 출력이 없으면 false를 반환함
var_dump() var_export() [반환값 있음, 합법적인 PHP 코드 번역] printf( )//C 언어 형식과 유사 printf("내 이름은 %s, 나이는 %d",n
a
me
,
<br>age) ;, 인쇄하세요
sprintf()//printf와 유사하지만 인쇄하지 않지만 다른 내용은 printf
Array 함수와 동일합니다.:1. 반환 값, 값으로 참조를 전달하면 원래 배열이 직접 수정됩니다. 】 V 누르기: sort, rsort, asort, arsort, K 누르기: ksort, krsort 문자 누르기: natsort();//区分大小写的排序
natcasesort();//不区分大小写的排序,
当遇到字符完全一样,按照数字排 eg: FILE1,FILE2, 这两个字符相同,再按照数字1<2排,所以结果 FILE1,FILE2
回调:usort(arr,"strnatcmp")</span>//回调类的排序,把
//回调类的排序,把arr数组里的每一个元素丢到strnatcmp()[非自然数排序]处理【返回新的排序数组】
규칙: "k" 없음, [값]에 따라 정렬, "a"로 정렬한다는 것은 KEY를 유지한다는 의미, "r"로 역순으로 정렬 "k" 있음, [KEY]에 따라 정렬, "r"로 정렬 역순
"u"는 처리를 위해 콜백 함수에 던져질
2.键值操作类:【都有返回值,没有在原来参数上修改】 1.array_values( arr);</span><span style="font-size:14px;font-family:'Microsoft YaHei', STXihei !important;">//获取//获取arr中的值重排,去掉下标【返回值新索引数组】 2.array_keys( arr[,"str",true])//获取arr中所有字符是”str”的下标,形成索引数组,true表示区分大小写【返回新索引数组】 3.array_search(“is”, arr[,true]</span><span style="background-color:inherit;line-height:1.5;color:rgb(51,51,51);font-family:Monaco, Consolas, Courier, 'Lucida Console', monospace;"><span style="color:rgb(0,0,0);font-family:'Microsoft YaHei', STXihei !important;">) </span><span style="color:rgb(0,0,0);font-weight:normal;font-family:'Microsoft YaHei', STXihei !important;">//返回值"is"在 ) //返回值"is"在arr中的key,找不到返回fales,true表示严格按照类型(8,”8”)【返回第一个匹配值】 4.in_array(“str”,arr);//判断"str"在 arr中是否存在,【返回BOOL】 5.is_array($arr);//判断是否是数组【返回BOOL】 6.array_key_exists(key, arr); //查询arr中是否有 key,【返回BOOL】 7.array_flip($arr);// 交换键值,如有重复,后来居上,【返回新数组】 8.array_reverse($arr,[true|false]);//数组顺序反转,param2是否保留原来键值【返回新关联/索引数组】 9.array_column(array(),’name’[,name_two]) — 返回数组中指定的name列[可选参数,如果有返回name=>name_two的形式]【返回一维数组】
를 의미합니다. 3. 요소 수 및 고유성 <br>
1.array_unique(에서 중복 값 제거 arr 및 중복 유지 첫 번째 값, [반환 배열, 키 값 유지]
2.array_count_values($arr)//배열 값이 나타나는 횟수 계산, [반환 배열, KEY는 원래 배열의 값 , VALUE는 카운트 수]
3.count(arr[,1])/sizeof();//统计
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","bb"]);//</span><span style="font-size:14px;font-family:'Microsoft YaHei', STXihei !important;"><span style="color:#ff0000;background-color:inherit;">删除或替换</span></span><span style="font-size:14px;font-family:'Microsoft YaHei', STXihei !important;">,从 删除或替换,从arr第二个开始取,删除或替换2个值【返回值为新数组,拆掉原数组】 3.array_combine(arr1, arr2);//数组arr1为KEY, arr2为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.数组的数据结构【2.无返回值,传值引用,就直接对原数组进行了修改】 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 eg:array[“a”=>2];=>URL:a=2& 字符串函数 返回bool 1.isset(a)//当 a=NULL 或不存在,返回false,反之为true 2.empty(a)//当 a=NULL/”/array()/0/’0’/不存在 时 返回true,反之为false 返回值为自字符 1.substr(字符串,开始地方,[返回字符串的长度]);// 截取字符串的一部分,第一个字符位置为0 2.substr_replace(str,"aaa",start[,length]);在 str上操作,从第start个开始,把【后边】的字符[全/或length个]替换 3.sub_count($str,”is”[,5,10]);//[ 从第五个字符开始,搜索长度为10,]搜索is在$str中出现的次数,【返回次数】 4.strstr($email,”@”[,true]) //从头开始搜索,无true返回@后边字符,有true返回@前边的字符[strrchr对比] 5.strrchr($email,”@”)//从结尾开始搜索,返回@后的所有字符 6.str_replace(被替换词,替换词,被搜索字符串,[统计替换次数$num]) 前两个参数也可为数组,两个数组元素个数相同 7.str_repeat(str,num);//重复 str字符串 num次, 返回值为数字类的 1.strpos($str,”@”);//返回@【第一次出现的位置】 2.strrpos($str,”@”);//返回@【最后一次出现的位置】 3.str_word_count($str[,0/1/2]); //返回$str中单词的数量[0指返回次数,默认值/1指以数组形式返回单词值/2指返回关联数组,k为单词首字母下标,v单词值] 4.strcmp(str1, str2);//按ASCII码比较 str1>str2 则返回1 相等返回0 <返回-1 strcasecmp不区分大小写的比较 5.strnatcmp(str1, str2);//按自然数的排序比较,上边的比较10<2;本函数比较10>2,按自然数大小来的 strcasecmp(str1, str2);strnatcasecmp//以上4个函数,str1, str2比较,【返回值:相等0,小于-1,大于1】 6. number_format(10000[,2]); //==》10,000.00 把第一个参数格式化,保留2位小数 7. strlen(string);<span style="color:rgb(69,69,69);font-family:arial, '宋体', sans-serif, tahoma, 'Microsoft YaHei';">成功则返回字符串 string 的长度 8. mb_strlen(string,'utf8');//获取字符串 string长度,多字节的字符被计为 1。 文本处理类 1.strtoupper($str)//字母全转为大写【返回全大写字符串】 2.strtolower()//字母全转为小写【返回全小写字符串】 3.strtotime(‘2015-10-10 10:10:10’);//指定时间转换为时间戳【返回时间戳】 4.str_pad($str,length,[—,STR_PAD_BOTH]); //在str的两边<span style="background-color:inherit;">填补</span>“---“,<span style="background-color:inherit;">注意,length若小于 “---“,注意,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前插入<br>,因为\n在源码可以换行,但是在浏览器窗口不行,有这个就可以 6.iconv( from_charset ; to_charset,str); //转化字符格式 file_name = iconv("gb2312","utf-8",$file_name);
正则函数[原则,能用字符串函数解决不用正则,速度问题]<br>
字符串的匹配查找
1.preg_match(pattern, subject,arr);</span>//按正则 //按正则pattern处理$subject,第一次匹配结果返回到数组中【函数的返回值为匹配次数】 2.preg_match_all(pattern, subject,arr</span><span style="background-color:inherit;font-weight:normal;"><span style="background-color:#FFA500;">)</span>//按正则</span><span style="background-color:inherit;font-weight:normal;"> )//按正则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.filectime($file)//文件创建时间【时间戳】 7.filemtime($file)//文件修改时间【时间戳】 8.fileatime($file)//文件访问时间【时间戳】 9.stat($file)//返回文件的大部分信息【文件信息数组】 目录的基本操作 1.basename($file)//返回文件名,index.php 2.dirname($file)//返回文件的路径,c://php/ 3.pathinfo($file)//返回该文件路径的所有信息 [“dirname”目录名] [“basename”文件名] [“extension”文件后缀] 目录复制,删除,统计大小使用的总结: 本质:依靠递归思想,对目录的的循环遍历,通过每一个文件的操作,得出结果 函数: 复制:copy(org, to);mkdir() 删除:unlink($file);mrdir(); 统计大小:filesize($file) 遍历目录 1.opendir(file)//打开一个目录,参数为目录名或目录路径【返回资源型的目录句柄 dir_handle,无权限返false】 2.readdir($dir_handle);//读取目录,参数为目录句柄,while,返回当前指向对象的名字,目录指针后移【返回filename,没有是返false】 3.closedir($dir_handle)//关闭打开的目录 4.rewinddir($dir_handle) //倒回目录句柄,将目录指针重置到目录开始 // 遍历文件夹$path,生成TABLE</span>function menu_list($root_path){ $num=0;//存储条数
1.mkdir(“dir_name”);//建立一个空的目录 2.rmdir(“dir_name”);//删除一个空的目录 unlink(“file_name”)//删除一个文件,当删除目录是,必须删除该目录下的文件
<br>
/** * 删除文件夹[也可以删除文件] * @param $root_path 该文件夹的路径9e7e334fc3297d4903fe143a74a3389654bdf357c58b8a65c66d7c19c8e4d1147d0cd40217185d3fdc3c04c34e4f4551 */9e7e334fc3297d4903fe143a74a3389654bdf357c58b8a65c66d7c19c8e4d114249224b4c1c6a37f2222a507347fa94afunction 54bdf357c58b8a65c66d7c19c8e4d114253fc25170d2e1f1b9f3a4ea57ca5812del_dir54bdf357c58b8a65c66d7c19c8e4d114(2f50e4cc982fb556b44bba6d32bdb440907fae80ddef53131f3292ee4f81644b$root_path){ // echo file_exists($root_path)."--<br>";9e7e334fc3297d4903fe143a74a3389654bdf357c58b8a65c66d7c19c8e4d1147d0cd40217185d3fdc3c04c34e4f455154bdf357c58b8a65c66d7c19c8e4d114249224b4c1c6a37f2222a507347fa94aif54bdf357c58b8a65c66d7c19c8e4d114(249224b4c1c6a37f2222a507347fa94a!54bdf357c58b8a65c66d7c19c8e4d114be0544550ee284a4bf81992224cfaedc907fae80ddef53131f3292ee4f81644bfile_existsd1c6776b927dc33c5d9114750b58633854bdf357c58b8a65c66d7c19c8e4d114(2f50e4cc982fb556b44bba6d32bdb440907fae80ddef53131f3292ee4f81644b$root_path))exit('文件不存在'); if(();exit;
$dir_handle249224b4c1c6a37f2222a507347fa94a=54bdf357c58b8a65c66d7c19c8e4d114be0544550ee284a4bf81992224cfaedc907fae80ddef53131f3292ee4f81644bopendird1c6776b927dc33c5d9114750b58633854bdf357c58b8a65c66d7c19c8e4d114(2f50e4cc982fb556b44bba6d32bdb440907fae80ddef53131f3292ee4f81644b$root_path);//打开此文件夹 while($cur_name249224b4c1c6a37f2222a507347fa94a=54bdf357c58b8a65c66d7c19c8e4d114be0544550ee284a4bf81992224cfaedc907fae80ddef53131f3292ee4f81644breaddird1c6776b927dc33c5d9114750b58633854bdf357c58b8a65c66d7c19c8e4d114($dir_handle)){//遍历文件夹 if($cur_name 249224b4c1c6a37f2222a507347fa94a==54bdf357c58b8a65c66d7c19c8e4d1145868e9d548cf6f35e741c491530fca89"." 54bdf357c58b8a65c66d7c19c8e4d114249224b4c1c6a37f2222a507347fa94a|| 54bdf357c58b8a65c66d7c19c8e4d114$cur_name=="..")continue;//删除前两个默认的 $cur_path249224b4c1c6a37f2222a507347fa94a=54bdf357c58b8a65c66d7c19c8e4d1142f50e4cc982fb556b44bba6d32bdb440907fae80ddef53131f3292ee4f81644b$root_path."/".$cur_name;9e7e334fc3297d4903fe143a74a33896249224b4c1c6a37f2222a507347fa94aif54bdf357c58b8a65c66d7c19c8e4d114(be0544550ee284a4bf81992224cfaedc907fae80ddef53131f3292ee4f81644bis_filed1c6776b927dc33c5d9114750b58633854bdf357c58b8a65c66d7c19c8e4d114($cur_path)){ //是文件,执行删除文件 del_file($cur_path);9e7e334fc3297d4903fe143a74a33896 }249224b4c1c6a37f2222a507347fa94aelse54bdf357c58b8a65c66d7c19c8e4d114{9e7e334fc3297d4903fe143a74a338967d0cd40217185d3fdc3c04c34e4f4551//是文件夹,删除文件夹,递归9e7e334fc3297d4903fe143a74a3389654bdf357c58b8a65c66d7c19c8e4d1147d0cd40217185d3fdc3c04c34e4f455154bdf357c58b8a65c66d7c19c8e4d114253fc25170d2e1f1b9f3a4ea57ca5812del_dir54bdf357c58b8a65c66d7c19c8e4d114($cur_path);9e7e334fc3297d4903fe143a74a33896 }9e7e334fc3297d4903fe143a74a33896 }9e7e334fc3297d4903fe143a74a33896be0544550ee284a4bf81992224cfaedc907fae80ddef53131f3292ee4f81644bclosedird1c6776b927dc33c5d9114750b58633854bdf357c58b8a65c66d7c19c8e4d114($dir_handle); (){ return (); }
统计目录大小【得自定义函数,不自带】
<br>
/** * 统计文件夹大小[也可以统计文件] * @param 文件夹的目录路径 * @return 返回该目录的大小 */
相关推荐:
위 내용은 PHP의 몇 가지 일반적인 기능 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!