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;  //6echo 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  转换指定字符串

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

`

转载于:https://www.cnblogs.com/chrdai/p/10447837.html

php一些高级函数方法相关推荐

  1. Python训练营—Tesk3—Python基础进阶—从函数到高级魔方方法

                    Python基础进阶--从函数到高级魔方方法 目录 Python基础进阶--从函数到高级魔方方法 一.函数 1.函数的定义 2.函数的调用 3.函数参数 4.变量作用域 ...

  2. python counter函数定义_分享几个自己常用的Python高级函数

    哈喽大家好我是蚂蚁,今天给大家分享几个我自己常用的Python相对高级点的函数,这些函数在特定的场景下能节省大量的代码. 简单列举一下我想要介绍的几个函数: counter:计数器 defaultdi ...

  3. Eigen教程(6)之高级初始化方法

    转载于: https://www.cnblogs.com/houkai/p/6351358.html 高级初始化方法 本篇介绍几种高级的矩阵初始化方法,重点介绍逗号初始化和特殊矩阵(单位阵.零阵). ...

  4. 一篇文章把你带入到JavaScript中的闭包与高级函数

    在JavaScript中,函数是一等公民.JavaScript是一门面向对象的编程语言,但是同时也有很多函数式编程的特性,如Lambda表达式,闭包,高阶函数等,函数式编程时一种编程范式. funct ...

  5. Oracle高级函数:rank over partition by

    高级函数,分组排序 over: 在什么条件之上. partition by e.deptno: 按部门编号划分(分区). order by e.sal desc: 按工资从高到低排序(使用rank() ...

  6. 第5章 高级函数和控制结构

    魔兽世界编程读书笔记(5) 第5章             高级函数和控制结构 5.1        多值返回 在Lua中,return语句能返回多个值,这些值能让我们更轻松地完成一些工作.例如在Wo ...

  7. Scala语言实现WordCount案例以及几个高级函数的使用总结

    实现案例前需要熟悉scala中集合的几个高级函数: 映射:集合.map() 即拿到集合中元素做某些处理,返回当前集合的类型. 扁平化:集合.flatten() 就是提取外层集合中的内层集合中的元素,打 ...

  8. IE 控件一些高级使用方法

    IE 控件一些高级使用方法 作者:杨老师 下载源代码 本文介绍如下内容 1.如何显示内存中的 HTML 网页: 2.如何屏蔽掉鼠标右键的上下文菜单: 3.如何扩展 HTML 中的脚本(external ...

  9. 18.高级函数(闭包与装饰器)

    一.闭包函数 1.闭包基础 前面我们已经学习了函数嵌套,我们再来看一个关于函数嵌套的例子. 外层函数outer_1定义了1个空列表lst,然后调用内层函数inner_1,每次调用时往内层函数传入参数1 ...

最新文章

  1. AMD 和 Intel 之战:CPU 哪家强?
  2. 前端开发面试题总结之——JAVASCRIPT(一)
  3. mybaits八:select查询返回map集合
  4. 一些知识点的初步理解_6(核函数,ing...)
  5. C语言stdio.h与stdlib.h的区别
  6. Java9发布回顾Java 8的十大新特性
  7. access工具_工具篇之pycharm小技巧-httpclient
  8. 1.4Activity保存现场状态
  9. emacs shell插件_Windows 下 Emacs 中的 zsh shell 使用方法
  10. skia 源码分析_【脚下有根】之Skia库的matrix代码解读
  11. linux管道命令sudo,那些超有趣的Linux命令——第一弹
  12. IP数量就是计算机数量吗,如何利用bash/python计算IP子网容纳计算机数量
  13. 手把手教你训练一个秒杀科比的投篮AI,不服来练 | 附开源代码
  14. 跨林迁移用户、计算机、邮箱(1)
  15. 我的世界基岩版种子和java版种子_我的世界无限循环种子
  16. Linux内存映射实现
  17. APK应用程序的解包、修改、编辑、汉化、打包及应用
  18. mac 误删引导分区
  19. 22年全国数学建模比赛ABC题思路模型
  20. 大话西游服务器维护多长时间,《大话西游3》2010-9-21服务器停机维护公告(二)...

热门文章

  1. mysql中nvl_Mysql中类似于oracle中nvl()函数的ifnull()函数
  2. 一段javascript告警回放代码
  3. java面试题十三 string创建了几个对象
  4. liferay jsp如何取PorletSession的值
  5. android 两足机器人,基于Android的双足机器人语音控制系统研究
  6. 实战|简单绕过waf拿下赌博网站
  7. Linux 后台运行程序方法总结
  8. python学习笔记(十)标准库pprint
  9. scala不使用new关键字创建对象实例
  10. 数据湖之iceberg系列(三)iceberg快速入门