PHP高等函数
1、call_user_func
// 官网地点: http://php.net/manual/zh/function.call-user-func.php
2、get_class
// 官网地点: http://php.net/manual/zh/function.get-class.php
3、get_called_class
// 官网地点: http://php.net/manual/zh/function.get-called-class.php
4、array_map
// 官网地点:http://php.net/manual/zh/function.array-map.php //为数组的每一个元素应用回调函数 示例: $str = '1 ,2,3'; $res = array_map(function ($v) { return intval(trim($v)) * 2; }, explode(',', $str)); $res的返回效果: array(3) { [0]=> int(2) [1]=> int(4) [2]=> int(6) }
5、strpos
// http://php.net/manual/zh/function.strpos.php //查找字符串初次涌现的位置,从0最先编码,没有找到返回false 示例: $time = "2019-03-02 12:00:00"; if(strpos($time,':') !== false){ $time = strtotime($time); } echo $time;
6、array_reverse
// 官网地点:http://php.net/manual/zh/function.array-reverse.php //返回单位递次相反的数组 示例: $time = "12:13:14"; $arrTime = array_reverse(explode(':',$time)); var_dump($arrTime); array(3) { [0]=> string(2) "14" [1]=> string(2) "13" [2]=> string(2) "12" }
7、pow
// 官网地点:http://php.net/manual/zh/function.pow.php //指数表达式 示例: $time = "12:13:14"; $arrTime = array_reverse(explode(':',$time)); $i = $s = 0; foreach($arrTime as $time){ $s += $time * pow(60,$i); // 60 的 $i 次方 $i ++; } var_dump($s); int(43994)
8、property_exist
// 官网地点:http://php.net/manual/zh/function.property-exists.php // 搜检对象或类是不是具有该属性 //假如该属性存在则返回 TRUE,假如不存在则返回 FALSE,失足返回 NULL 示例: class Test { public $name = 'daicr'; public function index() { var_dump(property_exists($this,'name')); // true } }
9、passthru
// 官网地点:http://php.net/manual/zh/function.passthru.php //实行外部顺序而且显现原始输出 //功用和exec() system() 有类似之处 示例: passthru(\Yii::$app->basePath.DIRECTORY_SEPARATOR . 'yii test/index');
10、array_filter
// 官网地点:http://php.net/manual/zh/function.array-filter.php //用回调函数过滤数组中的单位 示例: class TestController extends yii\console\Controller { public $modules = ''; public function actionIndex() { //当不运用callBack函数时,array_filter会去除空值或许false $enableModules = array_filter(explode(',',$this->modules)); var_dump(empty($enableModules)); //true //当运用callBack函数时,就会用callBack过滤数组中的单位 $arr = [1,2,3,4]; $res = array_filter($arr,function($v){ return $v & 1; //先转换为二进制,在按位举行与运算,获得奇数 }); var_dump($res); //array(2) { [0]=> int(1) [2]=> int(3) } } }
11、current
// 官网地点:http://php.net/manual/zh/function.current.php //返回数组中的当前单位 $arr = ['car'=>'BMW','bicycle','airplane']; $str1 = current($arr); //初始指向插进去到数组中的第一个单位。 $str2 = next($arr); //将数组中的内部指针向前挪动一名 $str3 = current($arr); //指针指向它“当前的”单位 $str4 = prev($arr); //将数组的内部指针倒回一名 $str5 = end($arr); //将数组的内部指针指向末了一个单位 reset($arr); //将数组的内部指针指向第一个单位 $str6 = current($arr); $key1 = key($arr); //从关联数组中获得键名 echo $str1 . PHP_EOL; //BMW echo $str2 . PHP_EOL; //bicycle echo $str3 . PHP_EOL; //bicycle echo $str4 . PHP_EOL; //BMW echo $str5 . PHP_EOL; //airplane echo $str6 . PHP_EOL; //BMW echo $key1 . PHP_EOL; //car var_dump($arr); //原数组稳定
12、array_slice
// 官网地点:http://php.net/manual/zh/function.array-slice.php //从数组中掏出一段 示例: $idSet = [1,2,3,4,5,6,7,8,9,10]; $total = count($idSet); $offset = 0; $success = 0; while ($offset < $total){ $arrId = array_slice($idSet,$offset,5); //yii2的语法,此处,注重array_slice的用法就行 $success += $db->createCommand()->update($table,['sync_complate'=>1],['id'=>$arrId])->execute(); $offset += 50; } $this->stdout('共:' . $total . ' 条,胜利:' . $success . ' 条' . PHP_EOL,Console::FG_GREEN); //yii2的语法
13、mb_strlen()
// 官网地点:http://php.net/manual/zh/function.mb-strlen.php //猎取字符串的长度 //strlen 猎取的是英文字节的字符长度,而mb_stren能够按编码猎取中文字符的长度 示例: $str1 = 'daishu'; $str2 = '袋鼠'; echo strlen($str1) . PHP_EOL; //6 echo mb_strlen($str1,'utf-8') . PHP_EOL; //6 echo strlen($str2) . PHP_EOL; // 4 一个中文占 2 个字节 echo mb_strlen($str2,'utf-8') . PHP_EOL; //2 echo mb_strlen($str2,'gb2312') . PHP_EOL; //2
14、list
// 官网地点:http://php.net/manual/zh/function.list.php //把数组中的值赋给一组变量 示例: list($access,$department)= ['all','1,2,3']; var_dump($access); // all
15、strcasecmp
// 官网地点:https://www.php.net/manual/zh/function.strcasecmp.php //二进制平安比较字符串(不辨别大小写) //假如 str1 小于 str2 返回 < 0; 假如 str1 大于 str2 返回 > 0;假如二者相称,返回 0。 示例: $str1 = 'chrdai'; $str2 = 'chrdai'; var_dump(strcasecmp($str1,$str2)); // int 0
16、fopen rb
// 官网地点:https://www.php.net/manual/zh/function.fopen.php //1、运用 'b' 来强迫运用二进制形式,如许就不会转换数据,规避了widown和unix换行符不通致使的题目, //2、另有就是在操纵二进制文件时假如没有指定'b'标记,可能会遇到一些新鲜的题目,包括坏掉的图片文件以及关于\r\n 字符的新鲜题目。 示例: $handle = fopen($filePath, 'rb');
17、fseek
// 官网地点:https://www.php.net/manual/zh/function.fseek.php //在文件指针中定位 //必需是在一个已翻开的文件流内里,指针位置为:第三个参数 + 第二个参数 示例: //将文件指针挪动到文件末端 SEEK_END + 0 fseek($handle, 0, SEEK_END);
18、ftell
// 官网地点:https://www.php.net/manual/zh/function.ftell.php //返回文件指针读/写的位置 //假如将文件的指针用fseek挪动到文件末端,在用ftell读取指针位置,则指针位置即为文件大小。 示例: //将文件指针挪动到文件末端 SEEK_END + 0 fseek($handle, 0, SEEK_END); //此时文件大小就即是指针的偏移量 $fileSize = ftell($handle);
19、basename
// 官网地点:https://www.php.net/manual/zh/function.basename.php //返回途径中的文件名部份 示例: echo basename('/etc/sudoers.d'); // sudoers ,注重没有文件的后缀名,和pathinfo($filePath)['filename']功用差不多
20、pathinfo
// 官网地点:https://www.php.net/manual/zh/function.pathinfo.php //返回文件途径的信息 示例: $pathParts = pathinfo('/etc/php.ini'); echo $pathParts['dirname'] . PHP_EOL; // /etc ,返回途径信息中的目次部份 echo $pathParts['basename'] . PHP_EOL; // php.ini ,包括文件名和拓展名 echo $pathParts['extension'] . PHP_EOL; // ini ,拓展名 echo $pathParts['filename'] . PHP_EOL; // php ,只要文件名,不包括拓展名 ,和basename()函数功用差不多
21、headers_sent($file, $line)
// 官网地点:https://www.php.net/manual/zh/function.headers-sent.php //检测 HTTP 头是不是已发送 //1、http头已发送时,就没法经由过程header()函数增加更多头信息,运用次函数最少能够防备HTTP头失足 //2、可选参数$file和$line不须要先定义,假如设置了这两个值,headers_sent()会把文件名放在$file变量,把输出最先的行号放在$line变量里
22、header('$name: $value', $replace)
// 官网地点:https://www.php.net/manual/zh/function.header.php //发送原生 HTTP 头 //1、注重:header必需在一切现实输出之前挪用才见效。 //2、header的$replace参数默以为true,会自动用后面的替代前面雷同的头信息,假如设为false,则强迫使雷同的头信息并存 示例: public function sendHeader() { if (headers_sent($file, $line)) { throw new \Exception("Headers already sent in {$file} on line {$line}"); } $headers = [ 'Content-Type' => [ 'application/octet-stream', 'application/force-download', ], 'Content-Disposition' => [ 'attachment;filename=test.txt', ], ]; foreach($headers as $name => $values) { //一切的http报头的称号都是首字母大写,且多个单词以 - 分开 $name = str_replace(' ', '-', ucwords(str_replace('-', ' ', $name))); $replace = true; foreach($values as $value) { header("$name: $value", $replace); $replace = false; //强迫使雷同的头信息并存 } } }
22、array_multisort($array1, SORT_ASC|SORT_DESC, $array2)
// 官网地点:https://www.php.net/manual/zh/function.array-multisort.php // 对多个数组或多维数组举行排序 //申明: $array1 : 排序效果是一切的数组都按第一个数组的递次举行分列 // $array2 : 待排序的数组
示例:
$array2 = [ 1000 => [ 'name' => '张三', 'age' => 25, ], 1001 => [ 'name' => '李四', 'age' => 26, ], ]; //假如想将 $array2 根据 age 举行排序。 //不过须要注重的是:两个数组的元素个数必需雷同,不然就会涌现一个正告信息: //Warning: array_multisort() [function.array-multisort]: Array sizes are inconsistent in …… //第一步:将age的数据拿出来作为一个零丁的数组,作为排序的根据。 $array1 = []; foreach ($array2 as $key => $val) { array_push($array1, $val['age']); } //第二步骤:运用 array_multisort() 举行排序。 array_multisort($array1, SORT_DESC, $array2); var_dump($array2); //数组的健名字假如是数字会被重置,字符串不会 // array (size=2) // 0 => // array (size=2) // 'name' => string '李四' (length=6) // 'age' => int 26 // 1 => // array (size=2) // 'name' => string '张三' (length=6) // 'age' => int 2
23、strtr 转换指定字符串
//官网文档:https://www.php.net/manual/zh/function.strtr.php strtr(string $str , string $from , string $to ) strtr ( string $str , array $replace_pairs ) //比方: $str = "<div class='just-sm-6 just-md-6'><div class='control_text'>{label}<font>*</font></div></div> <div class='just-sm-18 just-md-18'><div class='control_element'>{input} {hint} {error}</div></div>"; $parts = [ '{label}' => '岁数', '{input}' => '<input name="age" id="user-age" class="inputs" value="" />', '{hint}' => '岁数必需是 0-200 直接的数字', '{error}' => '花样不正确', ]; $string = strtr($str, $parts); echo htmlspecialchars($string); //<div class='just-sm-6 just-md-6'><div class='control_text'>岁数<font>*</font></div></div> <div class='just-sm-18 just-md-18'><div class='control_element'><input name="age" id="user-age" class="inputs" value="" /> 岁数必需是 0-200 直接的数字 花样不正确</div></div> var_dump(Yii::getAlias('@webroot')); var_dump(Yii::getAlias('@web'));
24、ReflectionClass 报告类的有关信息
//ReflectionClass 报告了一个类的有关信息 //官网地点:https://www.php.net/manual/zh/class.reflectionclass.php //比方: $class = new \ReflectionClass($this); //打印当前类文件地点目次 var_dump(dirname($class->getFileName())); //var/www/html/basic/controllers
25、call_user_func_array 挪用回调函数,并把一个数组参数作为回调函数的参数
//官网地点:https://www.php.net/manual/zh/function.call-user-func-array.php function foobar($arg, $arg2) { echo __FUNCTION__, " got $arg and $arg2\n"; } call_user_func_array("foobar", array("one", "two")); //输出效果: foobar got one and two
以上就是php高等函数有哪些的细致内容,更多请关注ki4网别的相干文章!