1.函数介绍
函数的英文叫做 : function , 而function的解释项中有另外一个含义”功能 ”, 函数就是功能 , 调用一个函数就是
在调用一个功能。
你可以理解成一个函数就是对一快代码的封装,然后调用函数,就会把这块代码运行
1.1基本语法
函数的构成元素 :
- function关键字
- 函数名
- 参数
- 函数体
- return
语法 :
function 函数名(参数名1=值1, 参数名2=值2, 参数名n=值n)
{
函数中的功能体
return 返回值
}
实例 :
<?php
function func(){
echo '我是func函数';
}
func();
?>
1.2函数参数
参数就在函数名称后面的一个括号内指定
位置传参 :
function f($x){
echo "$x"."\n"; // 打印1
}
f(1) // 内部会把1赋值给$x
默认值参数 :
function f($x=2){
echo "$x"."\n"; // 打印2
}
f() // 可以不传值,因为$x在定义的时候就已经赋值2了
指定传参 :
function f($x,$y=2){ // $y的值会被传入的值替换
echo "$x"."\n"; // 打印1
echo "$y"."\n"; // 打印3
}
f($x=1,$y=3)
1.3返回值
return 后面紧跟的就是返回值,函数的返回值会传给函数的调用者,即函数名()
<?php
function add($x,$y)
{
$total=$x+$y;
return $total;
}
echo add(1,16); // 打印17
?>
2.函数备注说明
-
函数名只能是
字母,数字,下划线
的组合 , 并且之间不能包含空格 , 数字不能放在函数名首位 -
函数名与变量命名规则一样 , 但是不同的是 ,
函数名不区分大小写
-
函数体的参数若是定义了 , 未传参 , 代码会报错.
-
函数后的参数如果有默认值 , 参数可以不填 ,代码也不会报错
-
函数后的参数可以写多个
-
函数后如果有默认值和无默认值的参数 , 通常把无默认值的参数写在最前面
-
函数体的变量与函数体外的变量没有关系
-
函数体中若有return ,
return后的代码不执行.
-
函数执行完后,可把函数体内的值,带到函数体外
-
函数的执行没有顺序关系,
可以在定义外之前的位置调用
3.函数导入
在实际开发中,常常需要把程序中的共用代码放到一个文件中,使用这些代码的文件只需要包含这个文件即可
这种方法有助于提高代码的重用性,给代码的编写与维护带来很大的便利
在PHP中,有以下四种方法包含一个文件:
序号 | 函数信息 | 说明 | 包含失败 |
---|---|---|---|
1 | include | 文件继续向下执行 , 通常用于动态包含 | 返回一条警告 |
2 | require | 代码就不会继续向下执行 , 通常包含极为重要的文件,这个代码别想执行 | 返回一个致命错误 |
3 | Include_once | 除了原有include的功能外,它还会做once检测,如果文件曾经被包含过,不在包含 | 返回一条警告 |
4 | require_once | 除了原功能以外,会做一次once检测,防止文件反复被包含 | 返回一个致命错误 |
// func.php
<?php
function func()
{
echo "执行了func函数"
}
>
// demo.php
<?php
// 在func.php文件的同级目录新建一个php文件,写入以下代码
include "func.php";
//可以直接调用
func();
>
4.常用内建函数
4.1数字常用函数总结
序号 | 函数信息 | 说明 | 实例 |
---|---|---|---|
1 | abs() | 求绝对值 输入数字 输出绝对值数字 | $abs=abs(-42); //42 |
2 | ceil() | 进一法取整输入浮点数 输出进一取整 | echo ceil(9.999) //10 |
3 | floor() | 舍去法取整输入浮点数 输出直接舍去小数部分 | echo ceil(9.999) //9 |
4 | fmod() | 浮点数取余输入两个浮点数 输出浮点数余数 | $x=5.7;$y=1.3;$r=fmod($x,$y)//$r 0.5 |
5 | pow() | 返回数的n此房输入基础的n此房 输出乘方值 | echo pow(-1,20)//1 |
6 | round | 浮点数四舍五入输入一个数值 输出保留小数点后多少位默认为0舍入后的结果 | echo round(195583.2)//196 |
7 | sqit | 求平方根输入被开方的数 输出平方根 | echo sqit(9)//3 |
8 | max() | 求最大值输入多个数字或数组 输出返回其中的最大值 | echo max(1.3.5.6.7) //7echo max(array(2,4,5)) //5 |
9 | min() | 求最大值输入多个数字或数组 输出返回其中的最大值 | echo min(1.3.5.6.7) //7echo min(array(2,4,5)) //5 |
10 | mt_rand() | 更好的随机数输入最小和最大 输出返回其中的最大值 | echo min(array(2,4,5)) //5 |
11 | rand() | 随机数输入最小或最大 输出返回其中的最大值随机分配 | echo rand() |
12 | pi() | 获取圆周率值输入无 输出获取圆周率 | echo pi(); // 3.1415926535898 |
4.2字符串常用函数总结
序号 | 函数信息 | 说明 | 实例 |
---|---|---|---|
1 | trim() | 删除字符串两端的空格或其他预定义字符 | "$str = "\r\nHello World!\r\n"; echo trim($str); |
2 | rtrim() | 删除字符串右边的空格或其他预定义字符 | "$str = "Hello World!\n\n"; echo rtrim($str);" |
3 | chop() | rtrim()的别名 | 同上 |
4 | ltrim() | 删除字符串左边的空格或其他预定义字符 | "$str = "\r\nHello World!"; echo ltrim($str);" |
5 | dirname() | 回路径中的目录部分(把它归在了字符串函数里了) | echo dirname("c:/testweb/home.php"); |
6 | str_pad() | 把字符串填充为指定的长度 | $str = "Hello World"; echo str_pad($str,20,"."); |
7 | str_repeat() | 重复使用指定字符串 | echo str_repeat(".",13); |
8 | str_split() | 把字符串分割到数组中 | print_r(str_split("Hello")); |
9 | strrev() | 反转字符串 | echo strrev("Hello World!"); |
10 | wordwrap() | 按照指定长度对字符串进行折行处理 | "$str = ""An example on a long word is: Supercalifragulistic""; echo wordwrap($str,15);" |
11 | str_shuffle() | 随机地打乱字符串中所有字符 | echo str_shuffle("Hello World"); |
12 | parse_str() | 将字符串解析成变量 | "parse_str("id=23&name=John%20Adams",$myArray); print_r($myArray);" |
13 | number_format() | 通过千位分组来格式化数字 | "echo number_format("1000000"); echo number_format("1000000",2); echo number_format("1000000",2,"","",""."");" |
14 | strtolower() | 字符串转为小写 | echo strtolower("Hello WORLD!"); |
15 | strtoupper() | 字符串转为大写 | echo strtoupper("Hello WORLD!"); |
16 | ucfirst() | 字符串首字母大写 | echo ucfirst("hello world"); |
17 | ucwords() | 字符串每个单词首字符转为大写 | echo ucwords("hello world"); |
18 | htmlentities() | 把字符转为HTML实体 | $str = ""John & 'Adams'""; echo htmlentities($str, ENT_COMPAT); |
19 | htmlspecialchars() | 预定义字符转html编码 | |
20 | nl2br() | \n转义为 | |
21 | strip_tags() | 剥去 HTML、XML 以及 PHP 的标签 | echo strip_tags("Hello world!"); |
22 | addcslashes() | 在指定的字符前添加反斜线转义字符串中字符 | $str = ""Hello, my name is John Adams." echo $str; echo addcslashes($str,'m');" |
23 | stripcslashes() | 删除由addcslashes()添加的反斜线 | echo stripcslashes("Hello, \my na\me is Kai Ji\m."); |
24 | addslashes() | 指定预定义字符前添加反斜线 | $str = "Who's John Adams?";echo addslashes($str); |
25 | stripslashes() | 删除由addslashes()添加的转义字符 | echo stripslashes("Who's John Adams?"); |
26 | quotemeta() | 在字符串中某些预定义的字符前添加反斜线 | $str = "Hello world. (can you hear me?)"; echo quotemeta($str); |
27 | chr() | 从指定的 ASCII 值返回字符 | echo chr(052); |
28 | ord() | 返回字符串第一个字符的 ASCII值 | echo ord("hello"); |
29 | strcasecmp() | 不区分大小写比较两字符串 | echo strcasecmp("Hello world!","HELLO WORLD!"); |
30 | strcmp() | 区分大小写比较两字符串 | |
31 | strncmp() | 比较字符串前n个字符,区分大小写 | |
32 | strncasecmp() | 比较字符串前n个字符,不区分大小写 | int strncasecmp ( string $str1 , string $str2 , int $len ) |
33 | strnatcmp() | 自然顺序法比较字符串长度,区分大小写 | int strnatcmp ( string $str1 , string $str2 ) |
34 | strnatcasecmp() | 自然顺序法比较字符串长度,不区分大小写 | int strnatcasecmp ( string $str1 , string $str2 ) |
35 | chunk_split() | 将字符串分成小块 | str chunk_split(str $body[,int $len[,str $end]]) |
36 | strtok() | 切开字符串 | str strtok(str $str,str $token) |
37 | explode() | 使用一个字符串为标志分割另一个字符串 | array explode(str $sep,str $str[,int $limit]) |
38 | implode() | 同join,将数组值用预订字符连接成字符串 | string implode ( string $glue , array $pieces ) |
39 | substr() | 截取字符串 | string substr ( string $string , int $start [, int $length ] ) |
40 | str_replace() | 字符串替换操作,区分大小写 | mix str_replace(mix $search,,mix $replace,mix $subject[,int &$num]) |
41 | str_ireplace() | 字符串替换操作,不区分大小写 | mix str_ireplace ( mix $search , mix $replace , mix $subject [, int &$count ] ) |
42 | substr_count() | 统计一个字符串,在另一个字符串中出现次数 | int substr_count ( string $haystack , string $needle [, int $offset = 0 [, int $length ]] ) |
43 | substr_replace() | 替换字符串中某串为另一个字符串 | mixed substr_replace ( mixed $string , string $replacement , int $start [, int $length ] ) |
44 | str_ireplace() | 字符串替换操作,不区分大小写 | mix str_ireplace ( mix $search , mix $replace , mix $subject [, int &$count ] ) |
45 | substr_count() | 统计一个字符串,在另一个字符串中出现次数 | int substr_count ( string $haystack , string $needle [, int $offset = 0 [, int $length ]] ) |
46 | substr_replace() | 替换字符串中某串为另一个字符串 | mixed substr_replace ( mixed $string , string $replacement , int $start [, int $length ] ) |
47 | similar_text() | 返回两字符串相同字符的数量 | int similar_text(str $str1,str $str2) |
48 | strchr() | 返回一个字符串在另一个字符串中开始位置到结束的字符串 | string strstr ( string $str, string $needle , bool $before_needle ) |
49 | strrchr() | 返回一个字符串在另一个字符串中最后一次出现位置开始到末尾的字符串 | string strrchr ( string $haystack , mixed $needle ) |
50 | stristr() | 返回一个字符串在另一个字符串中开始位置到结束的字符串,不区分大小写 | string stristr ( string $haystack , mixed $needle [, bool $before_needle = false ] ) |
51 | strtr() | 转换字符串中的某些字符 | string strtr ( string $str , string $from , string $to ) |
52 | strpos() | 寻找字符串中某字符最先出现的位置 | int strpos ( string $haystack , mixed $needle [, int $offset = 0 ] ) |
53 | stripos() | 寻找字符串中某字符最先出现的位置,不区分大小写 | int stripos ( string $haystack , string $needle [, int $offset ] ) |
54 | strrpos() | 寻找某字符串中某字符最后出现的位置 | int strrpos ( string $haystack , string $needle [, int $offset = 0 ] ) |
55 | strripos() | 寻找某字符串中某字符最后出现的位置,不区分大小写 | int strripos ( string $haystack , string $needle [, int $offset ] ) |
56 | strspn() | 返回字符串中首次符合mask的子字符串长度 | int strspn ( string $str1 , string $str2 [, int $start [, int $length ]] ) |
57 | strcspn() | 返回字符串中不符合mask的字符串的长度 | int strcspn ( string $str1 , string $str2 [, int $start [, int $length ]] ) |
58 | str_word_count() | 统计字符串含有的单词数 | mix str_word_count(str $str,[]) |
59 | strlen() | 统计字符串长度 | int strlen(str $str) |
60 | count_chars() | 统计字符串中所有字母出现次数(0..255) | mixed count_chars ( string $string [, int $mode ] ) |
61 | md5()iconv | 字符串md5编码 | $str = "Hello"; echo md5($str) |
62 | mb_substr | 获取字符串的部分 | string mb_substr ( string $str , int $start [, int $length = NULL [, string $encoding = mb_internal_encoding() ]] ) |
63 | mb_http_output | 设置/获取 HTTP 输出字符编码 | mixed mb_http_output ([ string $encoding = mb_http_output() ] ) |
64 | mb_strlen | 获取字符串的长度 | mixed mb_strlen ( string $str [, string $encoding = mb_internal_encoding() ] ) |
65 | iconv | 字符串按要求的字符编码来转换 | string iconv ( string $in_charset , string $out_charset , string $str ) |
66 | iconv_substr | 截取字符串的部分 | |
67 | iconv_get_encoding | 获取 iconv 扩展的内部配置变量 | |
68 | mb_substr_count | 统计字符串出现的次数 | |
69 | mb_check_encoding | 检查字符串在指定的编码里是否有效 | |
70 | mb_strrpos | 查找字符串在一个字符串中最后出现的位置 | |
71 | mb_split | 使用正则表达式分割多字节字符串 | |
72 | parse_url | 解释URL成为一个数组 | |
注释:mb_* 和iconv_* 他们可以处理多字节字符,例如:中文。中文主要用的是GBK和utf-8两种编码格式。GBK和utf-8是两个不同的编码委员会对于汉字进行的编码的标准。他们规定GBK是双字节,也就是一个汉字占用2Bytes。utf-8是三字节,一个汉字占用三个字节长度的存储空间。 |
4.3时间函数总结
getdate()
函数是一个内建函数 , 会返回一个数组 , 他们的索引就是 year mon mday等
<?php $mytime = getdate(); echo "年 :".$mytime['year']."\n"; echo "月 :".$mytime['mon']."\n"; echo "日 :".$mytime['mday']."\n"; echo "时 :".$mytime['hours']."\n"; echo "分 :".$mytime['minutes']."\n"; echo "秒 :".$mytime['seconds']."\n"; echo "时间戳 :".$mytime[0]."\n"; echo "一个小时中的第几钟 :".$mytime['minutes']."\n"; echo "这是一分钟的第几秒 :".$mytime['seconds']."\n"; echo "星期名称 :".$mytime['weekday']."\n"; echo "月份名称 :".$mytime['month']."\n";?>