02、PHP函数库

1、自定义函数

局部变量:函数内部定义的变量,只能内部使用

全局变量:从函数定义后的地方,一直到代码结尾都可以使用

超全局变量:函数内/外定义的函数,在哪里都可以被访问

//超全局变量
$GLOBALS
$_SERVER
$_GET/$_POST
$_FILES
$_COOKIE
$_REQUEST
$_SESSION

 

跟标识符命名规则相同,必须驼峰标记法,所有函数都是全局作用域,不支持重载、不支持取消定义、不支持重定义已声明的函数

定义及使用:

function add($a,$b){
  echo $a+$b;
}
add(1,2);

//或者
function add($a,$b){
  return $a+$b;
}
$c = add(1,2);

 

函数内对全局变量进行操作:$GLOBALS(超全局变量)  或者 global 关键字实现

$n = 1;
function add(){
  $GLOBALS['n']++;
  echo $n;  //2
}
add();

echo strrpos('name','a');  //从最后开始找,返回a在字符串里面的下标

echo substr('name',1);  //截取字符串,从第1位开始截,返回截取后的值

echo strtolower('HELLO');  //将大写转换为小写

 

引用传值

引用传值必须在参数的前面加上 & 符号

引用传值的参数只能是变量

引用传值会改变函数外的值

引用指向原始变量

$a = 'hahaha';

$b = &$a; //将$a的原始值指向$b,$b改变$a也改变

$b = 'xixixi'; //这样$a的原始值就会改变

echo $a;  //这里会输出 'xixixi'

 

实例:

function ha($a){
  $a++;
  echo $a; //这里是34
}
$a = 33;
ha($a); //这里是34(局部的)
echo $a; //这里仍然是33(全局的)

/////// 函数内部不能改变函数外部的值,但利用引用传值可以,如: ///////

function ha(&$a){
  $a++;
  echo $a; //这里是34
}
$a = 33;
ha($a); //这里是34(局部的)
echo $a; //这里是34(全局的)

 

可变参数

php5.5前

func_get_args()  //获取所有参数,并组合成数组,

func_get_arg()  //获取传递给函数的某一项

func_num_args();  //获取参数的数量

array_sum();  //对数组所有值求和

function avg(){
  $arr = func_get_args();
  print_r($arr); //这里会获取到所有传递过来的参数的数组
  
  //对接收到的所有参数,进行求和
  echo array_sum($arr);  //这里输出结果值

  //获取当前参数的数量
  $arr_len = func_num_args();
}

 

php5.5后

...xxx   //获取所有传递过来的参数

function avg(...arr){
  print_r($arr); //这里会获取到所有传递过来的参数的数组
}

 

函数返回值

略。。。

 

回调函数

callback回调函数是:作为参数,传进另一个函数中使用的函数

如:call_user_func('回调' , '参数')

function add ($a){
  echo $a;  
}

call_user_func('add','输出的内容');

//这样就会间接调用add函数

 

递归函数

递归函数:是指直接或间接调用函数本身的函数

递归函数条件:

1、在每一次调用自己时,必须是(在某种意义上)更接近于解

2、必须有一个终止处理或计算的准则

如:计算1-100的累加和

function recursive ($n){
  if($n >= 1){
   return $n + recursive($n - 1) ;      
  }  
}

 

可变函数

可变函数:是指如果一个变量名后有圆括号,PHP将寻找与变量的值同名的函数,并尝试执行它

用途:可以用来实现包括回调函数,函数表在内的用途

注意:可变函数不能用于,echo、print、unset、isset、empty、include、require 以及类似的语言结构。

用可变函数的语法来调用一个对象的方法,如:

$a = '123';
function echoit($haha){
    echo $haha;
}
$c = 'echoit';
$c($a);

 

 

 字符串函数

strlen:获取字符串长度,如

echo strlen('hahaixixixi');

 

strtolower:将字符串转换为小写,如

echo strtolower('SDLFKJSLDKFLS');    

strtoupper:将字符串转为大写,如

echo strtoupper('hahaixixixi');

 

ucfirst:将句子首字母转换为大写,如

echo ucfirst('are you ok?');

ucwords:将每个单词的首字母转换为大写,如  

echo ucwords('are you ok?');

 

str_replace:查找字符串中的字符,并进行替换,如

echo str_replace('a','1','hahahaha');//查找字符串中的a,将a替换成1

 

htmlspecialchars:预定义字符转为 HTML 实体,如

// $str = "<h1>转为实体</h1>";
// $echoi = htmlspecialchars($str,ENT_COMPAT);//ENT_COMPAT仅编码双引号,默认
// echo $echoi;

// $str = '<h1>转为实体</h1>';
// $echoi = htmlspecialchars($str,ENT_QUOTES);//ENT_QUOTES仅编码 双引号 和 单引号
// echo $echoi;

$str = "<h1>转为实体</h1>";
$echoi = htmlspecialchars($str,ENT_NOQUOTES);//不编码任何引号
echo $echoi;

//即将单引号或双引号里面的,& > < " ' 等转为html字符

 

ltrim:实现删除字符串开始位置的空格或其他字符

// $str = "Hello    World!";
// echo $str . "<br>";
// echo ltrim($str,"Hello");//从字符串左边,截取Hello,返回截取后的结果

//若第二个参数省略,则去除以下所有字符
// "\0" - NULL
// "\t" - 制表符
// "\n" - 换行
// "\x0B" - 垂直制表符
// "\r" - 回车
// " " - 空格
$str = " \0     HelloWorld!";
echo ltrim($str);

 rtrim:实现删除字符串结束位置的空格或其他字符

// $str = "Hello    World!";
// echo $str . "<br>";
// echo ltrim($str,"World");//从字符串右边,截取World,返回截取后的结果

//若第二个参数省略,则去除以下所有字符
// "\0" - NULL
// "\t" - 制表符
// "\n" - 换行
// "\x0B" - 垂直制表符
// "\r" - 回车
// " " - 空格
$str = "Hello World!\0    ";
echo ltrim($str);

 trim:实现删除字符串 开始和结束位置 的空格和其他字符

 

strpos:返回一个字符出现在另一个字符串,第一次出现的位置

echo strpos('lksdjlkasdkf','a'); //7  返回a在字符串里面第一次出现的位置

stripos:返回一个字符出现在另一个字符串,第一次出现的位置,忽略大小写

echo strpos('lksdjlkAsdkf','a'); //7  返回a在字符串里面第一次出现的位置,忽略大小写

 

strrpos:返回一个字符在另一个字符串,最后一次出现的位置

echo strrpos('lksdjlkasdkfa','a'); //12  返回a在字符串里面,最后一次出现的位置

 strrpos:返回一个字符在另一个字符串,最后一次出现的位置,忽略大小写

echo strrpos('lksdjlkasdkfA','a'); //12  返回a在字符串里面,最后一次出现的位置,忽略大小写

 

explode:字符串转数组

$str = 'a|b|c|d';
print_r(explode('|' , $str)); //以 | 为分界线进行分割

implode:将数组转为字符串

$arr = array('a' , 'b' , 'c' , 'd');
echo implode($arr); //将数组每一项拼接起来,没有分隔
echo '<br>';
echo implode(',' , $arr); //将数组每一项拼接起来,用逗号分隔

 

substr:截取字符串

$str = 'abcdefg';
echo substr($str , 0 , 2);//从第0为开始,截取长度为2,若长度为负数,则往回截取
echo '<br>';
echo substr($str , 0); //若省略长度,则截取到最后一位

 

strstr:将搜索一个字符串在另一个字符串中第一次出现的位置,区分大小写。返回字符串的其余部分

$str1 = 'abcdefg';
$str2 = 'c';
echo strstr($str1 , $str2); //将返回str2第一次出现的位置,直到最后。即cdefg

stristr:将搜索一个字符串在另一个字符串中第一次出现的位置,不区分大小写。返回字符串的其余部分

$str1 = 'abcdefg';
$str2 = 'C';
echo strstr($str1 , $str2); //将返回str2第一次出现的位置,直到最后。即cdefg

 

md5:字符串加密,或者说计算字符串的md5的哈希值

$str  = 'hahaha';
echo md5($str);

 

str_shuffle:随机打乱字符串

$str = 'aslkjfsldfklsdf';
echo str_shuffle($str);

 

sprintf:字符串格式函数

$num = 5;
$str = 'apple';
echo sprintf(' there are %d %s ' , $num,$str);

//若一个只有一个变量的话
echo sprintf(' there are %1d  and %1d ',$num);

//若设置小数点长度
echo sprintf(' there are %.2f ',$num);

 

//规定字符串以及如何格式化其中的变量
%%  //返回一个百分号%
%b   //二进制数
%d   //包含正负号的十进制数
%e   //使用小写的科学计数法(例如 1.2e+2)
%s   //字符串
%f   //浮点数(本地设置)

 . //附加的格式值,必须放置在%和字母之间(例如%.2f)
 + - //在数字前面加上 + 或 - 来定义数字的正负性。只有负数才做标记,正数不做标记
 -' //规定使用什么作为填充,默认是空格。它必须与宽度指定器一起使用
 -- //左调整变量值
 -[0-9] //规定变量的最小宽度
 -.[0-9] //规定小数位数或最大字符串长度 

 

 

数学函数库

ceil:向上取整

$num = 3.14;
echo ceil($num); //输出4

floor:向下取整

$num = 3.14;
echo floor($num); //输出3

round:四舍五入

$n = 3.14159;
echo round($n); //3
echo round($n , 3); //3.142    取到小数点后3位

 

 number_format:以千位分隔符方式,格式化数字

$n = 2348.456;
echo number_format($n); //2,348
echo number_format($n , 2); //2,348.46    格式化到小数位后两位,附带四舍五入

 

 

pow:幂运算

echo pow(2 , 3);  //8    2的3次方

 

sqrt:平方根

echo sqrt(4); //2     4的平方根

 

 

rand:随机数

echo rand(0,100); //输出0-100之间的随机数

mt_rand:更好的随机数,速度比 rand 快3倍左右

echo mt_rand(0-100); //输出0-100之间的随机数

 

fmod:浮点数余数

//浮点数余数
echo fmod(7.8 , 3); //1.8

//整数余数
echo 7.8 % 3; //1 

 

 

 max:获取两个或以上数字的最大值

$x = 3;
$y = 7;
$z = 8.8;
echo max($x,$y,$z); //8.8

 

 min:获取两个或以上数字的最小值

$x = 3;
$y = 7;
$z = 8.8;
echo min($x,$y,$z); //3

 

 

 

 日期时间函数库

配置文件修改时区

1、php.ini 中查找Date

2、将 date.timezone 前的分号去掉

3、在 date.timezone = 后面加上 'Asia/Shanghai'

4、 重启Apachech服务器

PHP函数修改时区

date_default_timezone_set('Asia/Shanghai');

 

获取当前时区

echo date_default_timezone_get();

 

 

函数操作

date:格式化本地时间 / 日期

echo date('Y年m月d日 , H:i:s');

echo '昨天这个时候的时间是' . date('Y-m-d H:i:s' , time()-86400); //将时间戳转为正常时间
echo date('Y-m-d H:i:s' , 23423434...); //将时间戳转为正常时间

 

strtotime:将字符串转Unix时间戳,即精确计算某个时间点的时间戳

echo '三个星期之前的时间戳为' , strtotime('-3 weeks');
echo '上个月的第一天的时间戳为' , strtotime('last day of -1 month'); //不能直接用 -1 month,因为 -1 month 是以30天为单位计算的

 

 

 

 

 microtime:返回 unix 时间戳和微秒数

echo microtime(); //返回当前的微秒数 及时间戳,空格隔开

echo microtime(true); //返回当前时间戳,含微秒数

 

 

uniqid:生成唯一的id号

echo uniqid(); //唯一id号

echo uniqid('haha'); //给id号加前缀 haha

 

 

getdate:获取当前时间的信息,数组形式返回

print_r( getdate() );

 

posted @ 2020-09-05 19:07  JaydenQiu  阅读(227)  评论(0)    收藏  举报