🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 一:常见字符串操作 1. 截取字符串 substr(string $string, int $start [,int $length]) 第一个参数 $string是待截取的字符串 $start是开始截取的位置如果$start>=0是从左边开始定开始位置,左边第一个字符是0 如果$start<0是从右边开始定开始的位置右边的第一个字符是-1。$length如果不存在表示从start的位置截取到结尾,$length 的值是0 false null 那么返回一个空字符串,如果$length>0 表示从start的位置截取多少位 如果$length<0 那么从末尾截取掉 |$length|个字符 定末尾的位置从start开始截取。 2. 检索字符串 strstr(string $haystack, mixed $needle [, bool $before_neddle =false] ) $haystack 输入的字符串 $needle 查找的字符串 $before_neddle 默认是false 返回needle第一次出现位置到末尾(包含$neddle) 如果$before_neddle是true 返回 needle第一次出现之前的字符串(不包含$neddle) 3. 替换字符串 str_ireplace(mixed $search, $mixed $replace,mixed $subject [,int &$count]) $search要搜索的值 可以是字符串或数组 $replace 要替换的值 $subject 要被搜索和替换的字符串或数组 count 如果设置了,会设置执行替换的次数(?) str_ireplace 是 str_replace忽略大小写的版本 i=>ignore(忽略) 4. 分割字符串 explode(string $delimiter,string $string [,int $limit]) $delimiter 分隔符 $string 被分割的字符串 如果设置了limit limit是正数则返回数组最多包含limit个元素后面的元素包含在string的剩余部分 如果limit参数是负数则返回除了最后-limit个元素外的所有元素 如果limit是0则被当成1 5. 合并字符串 implode ([string $glue,] array $pieces) $glue 连接符,默认为空的字符串 $pieces 需要转化的数组 6. 反转字符串 strrev(string $string) 7. 重复字符串 str_repeat(string $put,int $multiplier) $input 待操作的字符串 $multipliter 重复的次数 如果为0函数返回空字符串 8. 查找字符串 stripos(string $haystack, string $neddle [,int $offset=0]) 返回字符串$haystack中 $neddle首次出现的位置 $offset是偏移量 如果提供该参数搜索会从字符串该字符数开始统计 stripos 是strpos忽略大小写的版本 9. 统计字符串长度 strlen(string $string) 10. 解释url成一个数组 parse_url(string $url,[,int $component=-1]) $url 被解析的url component指定 PHP_URL_SCHEME 、 PHP_URL_HOST 、 PHP_URL_PORT 、 PHP_URL_USER 、 PHP_URL_PASS 、 PHP_URL_PATH 、 PHP_URL_QUERY 或 PHP_URL_FRAGMENT 的其中一个来获取 URL 如果不 指定表示获取全部 ## 二:常见数组操作 1. 数据操作的基本函数 (1)数据的键名和值 array_values($arr); 获取数组的值 array_keys($arr); 获取数组的键名 array_flip($arr); 数组中的值和键名交换(如果有重复的后面的覆盖前面的) in_array('apple',$arr);在数组中检索apple array_search('apple',$arr);在数组中检索apple,如果存在返回键名 array_key_exists('apple',$arr);检索给定的键名是否存在数组中 (2)数组和变量之间的转化 extract ( array &$var_array [, int $extract_type = EXTR_OVERWRITE [, string $prefix = NULL ]] ) 从数组中将变量导入到当前的符号表,该函数使用数组键名作为变量名,使用数组键值作为变量值。 type: EXTR_PREFIX_SAME - 如果有冲突,在变量名前加上前缀 prefix。(其他参数自己查阅文档) compact(var1,var2...) compact() 在当前的符号表中查找该变量名并将它添加到输出的数组中,变量名成为键名而变量的内容成为该键的值。简单说, 它做的事和 extract() 正好相反。返回将所有变量添加进去后的数组。 任何没有变量名与之对应的字符串都被略过。 2. 数组的分段和填充 (1)数组的分段 array_slice ( array $array , int $offset [, int $length = NULL [, bool $preserve_keys = false ]] ) preserve_keys :默认会重新排序并重置数组的数字索引,如果设置成true则不会重新排序 array_splice ( array &$input , int $offset [, int $length = 0 [, mixed $replacement ]] ) array_splice() 函数与 array_slice() 函数类似,选择数组中的一系列元素,但不返回,而是删除它们并用其它值代替。 如果提供了第四个参数,则之前选中的那些元素将被第四个参数指定的数组取代。最后生成的数组将会返回。 注:如果$length是0也可以用作往数组指定位置插入。 (2)分割多个数组 array_chunk ( array $input , int $size [, bool $preserve_keys = false ] ); 将一个数组分割成多个 $size:每个数组的单元数目 preserve_keys 设为 TRUE ,可以使 PHP 保留输入数组中原来的键名。如果你指定了 FALSE ,那每个结果数组将用 从零开始的新数字索引 (3)数组填充 array_pad ( array $input , int $pad_size , mixed $pad_value ); 用值将数组填补到指定长度 $pad_size: 新数组的长度。如果 pad_size 为正,则填补到数组的右侧,如果为负则从左侧开始填补。如果 pad_size 的绝对值小于或等于 input 数组的长度则没有任何填补。 $pad_value:将被填充的值,只有在 input 的现有长度小于 pad_size 的长度时才有效 array array_fill ( int $start_index , int $num , mixed $value ); 用 value 参数的值将一个数组填充 num 个条目,键名由 start_index 参数指定的开始。 $start_index 返回数组的第一个索引值 $num 插入的元素的数量 $value用来填充的值 3. 数组与栈 array_push ( array &$array , mixed $var [, mixed $... ] ) 将一个或多个元素压入数组栈的末尾(入栈),返回入栈元素的个数 array_pop ( array &$array ) 将数组栈的最后一个元素弹出(出栈) 4. 数组与队列 array_shift ( array &$array ) 将 array 的第一个单元移出并作为结果返回,将 array 的长度减一并将所有其它单元向前移动一位。所有的数字键名将改为 从零开始计数,文字键名将不变。 array_unshift ( array &$array , mixed $var [, mixed $... ] ) 将传入的单元插入到 array 数组的开头。注意单元是作为整体被插入的,因此传入单元将保持同样的顺序。所有的数值键名 将修改为从零开始重新计数,所有的文字键名保持不变 5. 回调函数 array_walk ( array &$array , callable $funcname [, mixed $userdata = NULL ] ) eg: $fruits = array( "d" => "lemon" , "a" => "orange" , "b" => "banana" , "c" => "apple" ); array_walk($fruits,function($items,$k,$prefix){ echo $prefix.'_'.$k.'||'.$items."\r\n"; },'hlcc'); 结果: hlcc_d||lemon hlcc_a||orange hlcc_b||banana hlcc_c||apple array_map ( callable $callback , array $arr1 [, array $... ] ) 该数组包含了 arr1 中的所有单元经过 callback 作用过之后的单元。callback 接受的参数数目应该和传递给 array_map() 函数的数组数目一致。 eg: $a = array( 1 , 2 , 3 , 4 , 5 ); $c = array(9,9,9,9,9); $b=array_map(function($n,$m){ return $m.'_'.$n*$n; },$a,$c); var_dump($b); 结果: array(5) { [0]=> string(3) "9_1" [1]=> string(3) "9_4" [2]=> string(3) "9_9" [3]=> string(4) "9_16" [4]=> string(4) "9_25" } array_filter ( array $input [, callable $callback = "" ] ); 次将 input 数组中的每个值传递到 callback 函数。如果 callback 函数返回 TRUE ,则 input 数组的当前值会被包含在 返回的结果数组中。数组的键名保留不变。 array_reduce ( array $input , callable $function [, mixed $initial = NULL ] ) 将回调函数 function 迭代地作用到 input 数组中的每一个单元中,从而将数组简化为单一的值 initial :如果指定了可选参数 initial,该参数将被当成是数组中的第一个值来处理,或者如果数组为空的话就作为最终返回值。 eg: function rsum ( $v , $w ) { $v += $w ; return $v ; } $a = array( 1 , 2 , 3 , 4 , 5 ); $b = array_reduce ( $a , "rsum" ,10); var_dump($b); 结果 25 6. 数组的排序 sort ( array &$array [, int $sort_flags = SORT_REGULAR ] ); 本函数对数组进行由小到大排序。当本函数结束时数组单元将被从最低到最高重新安排 rsort ( array &$array [, int $sort_flags = SORT_REGULAR ] ) 本函数对数组进行逆向排序(最高到最低)。 usort ( array &$array , callable $cmp_function ); 本函数将用用户自定义的比较函数对一个数组中的值进行排序。如果要排序的数组需要用一种不寻常的标准进行排序, 那么应该使用此函数 eg: function cmp ( $a , $b ) { return strcmp ( $a [ "fruit" ], $b [ "fruit" ]); } $fruits [ 0 ][ "fruit" ] = "lemons" ; $fruits [ 1 ][ "fruit" ] = "apples" ; $fruits [ 2 ][ "fruit" ] = "grapes" ; usort ( $fruits , "cmp" ); while (list( $key , $value ) = each ( $fruits )) { echo " $fruits [ $key ] : " . $value [ "fruit" ] . "\n" ; } 结果: $fruits[0]: apples $fruits[1]: grapes $fruits[2]: lemons ksort($arr);按照键名正序排序 krsort($arr); 按照键名逆序排序 uksort ( array &$array , callable $cmp_function ); 用用户自定义的比较函数对数组中的键名进行排序 natsort($arr); 自然排序(忽略键名) 7. 数组的计算 array_sum($arr); 对数组内部的所有元素做求和运算 数组对的合并 array_merge($arr1,$arr2); 合并两个或多个数组(相同的字符串键名,后面的覆盖前面的,相同的数字键名, 后面的不会做覆盖操作,而是附加到后面) array_merge_recursive — 递归地合并一个或多个数组 如果输入的数组中有相同的字符串键名,则这些值会被合并到一个数组中去,这将递归下去,因此如果一个值本 身是一个数组,本函数将按照相应的条目把它合并为另一个数组。然而,如果数组具有相同的数组键名,后一个值 将不会覆盖原来的值,而是附加到后面。 数组的差集 array_diff ( array $array1 , array $array2 [, array $... ] ); 对比返回在 array1 中但是不在 array2 及任何其它参数数组中的值。 array_diff_assoc ( array $array1 , array $array2 [, array $... ] ); 返回一个数组,该数组包括了所有在 array1 中但是不在任何其它参数数组中的值。注意和 array_diff() 不同的是键名也用于比较 数据的交集 array_intersect ( array $array1 , array $array2 [, array $ ... ] ); 返回一个数组,该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值。注意键名保留不变。 array_intersect_assoc ( array $array1 , array $array2 [, array $ ... ] ); 返回一个数组,该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值。注意和 array_intersect() 不同的是键名也用于比较。 8. 其它数组函数 range ( mixed $start , mixed $limit [, number $step = 1 ] ); 建立一个包含指定范围单元的数组 $step步长 ($arr); 移除数组中重复的值,新的数组中会保留原始的键名 array_reverse($arr,TRUE); 返回一个单元顺序与原数组相反的数组,如果第二个参数为TRUE保留原来的键名 array_rand($arr,2); 从数组中随机取出一个或 多个元素 shuffle($arr); 将数组的顺序打乱 array_combine — 创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值 array_multisort — 对多个数组或多维数组进行排序 array_unique — 函数移除数组中的重复的值,并返回结果数组 ## 三:php操作日期常见函数 1. time(); 返回当前的 Unix 时间戳 2. date ( string $format [, int $timestamp ] ) 将时间戳格式化为本地的日期时间,返回格式化后的字符串。 第二个参数为可选参数,表示时间戳,默认值为time(),即当前时间的时间戳 周: w 数字型的星期几,如: "0" (星期日) 至 "6" (星期六) l - 星期几,英文全名; 如: "Friday" D - 星期几,三个英文字母; 如: "Fri" 月份: m - 月份,二位数字,若不足二位则在前面补零; 如: "01" 至 "12" n - 月份,二位数字,若不足二位则不补零; 如: "1" 至 "12" M - 月份,三个英文字母; 如: "Jan" 3. strtotime ( string $time [, int $now ] ); 将字符串格式的英文日期时间转换为Unix时间戳。返回值的类型为int ## 四: php常见的操作文件的函数 1. 创建目录 mkdir("path/to/mydir",0777); 2. 判断文件是否存在 file_exist($file); 3. 检查指定文件是否是目录 is_dir($file); 4. 判断给定的文件是否是一个正常文件 is_file($file); 5. 判断文件名是否是一个符号链接( 软连接) is_link($file); 6. 删除目录(只能删除空目录) rmdir(); 7. 删除文件 unlink(); 8. 获取文件和目录的权限 fileperms() 9. 获取指定文件或目录的类型 file_type(); 10. 重命名文件或者目录 rename(oldname,newname,[,context]); 11. 复制 拷贝文件 copy(source,destination); 不能对目录进行此项操作,如果目标文件已经存在,原来的文件将被覆盖。 12. 获取目录的可用空间 disk_free_space(); 13. 判断指定的文件是否可写 is_writeable(); is_writable(); 14. 改变文件的权限模式 chmod(file,[,mode]); 15. 锁定或释放文件 flock($file,$lock[,mix $block]); lock的参数可以有以下值: 要取得共享锁定(读取程序) lock 设置 LOCK_SH 要取得独占 锁定(写入程序)lock 设置 LOCK_EX 要释放锁定(无论共享和独占) lock 设置LOCK_UN 注: 如果不希望flock() 在锁定是堵塞,给lock 加LOCK_NB 16. 读取目录文件 opendir(); 打开一个目录句柄之后用于 closedir();readdir();rewinddir(); readdir(); 返回目录中下一个文件的文件名,文件名以 在文件系统中的排序返回 closedir(); 关闭由dir_handle指定的目录流,流必须之前被opendir()所打开 rewinder(); 将 dir_handle指定的目录流重置到目录的开头。