函数概念
一段封装好的代码,可以随时调用。
函数的定义格式
function 函数名([参数1,参数2,....]){
//执行语句;
//ruturn;
}
函数的命名规范
命名规范:对于函数,命名规则和变量是一样的,但是不区分大小写。
函数的调用过程与返回值
函数调用时,代码执行权进入函数
一,当函数内的所有语句执行完后,函数结束,交回执行权。
二,当函数碰到ruturn语句时,函数返回,交回执行权。
返回值,类似街边的投币机,投进去两枚硬币,返回一瓶矿泉水。
返回值,是偷偷返回的,并不会在屏幕上输出,取决于怎么使用返回值。
函数有且只有一个返回值,返回值可以赋值给变量
function h2($a,$b){
$c = $a+$b;
return $c;
}
$d = h2(4,5);
echo "$d"; // 9
function t(){
echo '1';
echo '2';
echo '3';
return 'good';
echo '4';
echo '5';
return 'study';
}
$res = t();
echo $res; // 123good
函数参数的传值方式
直接赋值
function t1($a){
$a += 1;
echo $a;
}
$b = 3;
t1($b);//传参相当于把$b的值赋值给$a;而$a是属于函数内部的,体现函数的封装性。
echo $b;//打印变量$b的值。3
// 与上面一样,函数t2接收外部变量$a的值,赋值给函数内部变量$a上
function t2($a){
$a += 1;
echo $a;
}
$a = 3;
t2($a);
echo $a;
引用赋值
这种传参方式是不推荐的,破坏了函数的封装性。
function t3(&$a){
$a += 1;
}
$b = 5;
t3($b);
echo $b;// 6,$a和$b指向了同一个地址,
动态函数
变量的值与函数同名,可以使用$bianliangming()来调用函数
function wel(){
echo 'welcome';
}
$heart = 'wel';
wel(); // welcome
$heart(); // welcome
函数中变量的作用域
在php页面中声明的变量叫'全局变量',
在函数内变量叫'局部变量'。
php函数不能直接访问外部变量
$a = 12;
function t(){
echo $a;
}
t(); // Undefined variable: a 变量a未定义
//因此可以传参进去
$a = 12;
function t($a){
echo $a;
}
t($a); // 12
// 当然了亦可以在函数内部使用global去声明该变量是全局变量
global
不推荐使用global,破坏了函数的封装性
$a = 12;
function t(){
global $a;
global $b;
$b = 13;
echo $a;
}
t(); // 12
echo $b; // 13
超级全局变量
在页面的任何部分,包括函数内等,都可以直接访问。
function t1(){
print_r($_GET);
}
t1(); // array
PHP常用系统函数
常用字符串函数
strtoupper把英文字符串转换成大写字母strtolower把英文字符串转换成小写字母substr英文字符串截取mb_substr中文字符串截取,需要扩展mb库strrev颠倒字符串。将字符串前后颠倒。strlen获取字符串的长度number_format格式货币、数字、时间等md5加密函数,md5() 函数计算字符串的 MD5 散列。md5_file(file,raw)函数计算文件的 MD5 散列。raw参数同md5
/**
* md5(string,raw)
* raw 可选。规定十六进制或二进制输出格式:
* TRUE - 原始 16 字符二进制格式
* FALSE - 默认。32 字符十六进制数
*/
$str = "123456";
echo md5(md5($str).'qdgithub.com');
// number_format
$str='1234567890.123456';
echo $str.'<br>';
echo number_format($str).'<br>';
echo number_format($str, 2, '.', ',').'<br>';
和html相关的字符串函数
htmlspecialchars把预定义的字符'<'; (小于)和 '>' (大于)转换为 HTML 实体:htmlspecialchars_decode把预定义的 HTML 实体 '<'(小于)和 '>'(大于)转换为字符nl2br将字符串中”\n”转成HTML换行符“<br>”strip_tags删除HTML的标签函数
// htmlspecialchars
$str = 'This is some <b>bold</b> text.';
echo htmlspecialchars($str); // This is some <b>bold</b> text.
// htmlspecialchars_decode
$str = 'This is some <b>bold</b> text.';
echo htmlspecialchars_decode($str); // This is some <b>bold</b> text.
// nl2br
$str = 'this is a test\n';
$str .= 'this is a demo\n';
$str .= 'this is a hello\n';
echo "{$str}";
echo '<br>';
echo nl2br($str);
字符串的比较函数(按字节)
strcmp(整个比较是否相同)strncmp(指定比较长度的字符串比较)strcasecmp(不区分大小写的全串比较)strnatcmp使用自然排序算法比较字符串
$userName = 'Admin'; //声明一个字符串作为用户名
//if(strcasecmp($userName, 'admin') == 0) { //不区分大小写地比较,相等返回0
if( strcasecmp(strtolower($userName), strtolower('admin')) == 0 ) { //采用统一小写后比较
echo '用户名存在';
}
switch(strcmp($ userName, 'admin')) { //区分字符串中字母的大小写比较
case 0: echo '两个字符串相等<br>'; break; //两个字符串相等则返回0
case 1: echo '第一字串大于第二字串<br>'; break; //第一个字符串大时则返回1
case -1: echo '第一字串小于第二字串<br>'; break; //第一个字符串小时则返回-1
}
//strnatcmp函数
$arr1 = $arr2 = array('img12.png', 'img10.png','img2.png', 'img1.png');
echo '使用strcmp排顺序后:\n';
usort($arr1, 'strcmp');
print_r($arr1);
//[0] => img1.png [1] => img10.png [2] => img12.png [3] => img2.png
echo '\n 使用strnatcmp排序后:\n';
usort($arr2, 'strnatcmp');
print_r($arr2);
//[0] => img1.png [1] => img2.png [2] => img10.png [3] => img12.png
常用数组函数
array_keys返回数组键名组成的数组, 参数是一个数组array_key_exists(key,array);某个数组里面是否存在某个键key,返回值是Boolean值in_array函数搜索数组中是否存在指定的值。
is系列函数-isset
isset() 函数用于检测变量是否已设置并且非 NULL。
如果已经使用 unset() 释放了一个变量之后,再通过 isset() 判断将返回 FALSE。若使用 isset() 测试一个被设置成 NULL 的变量,将返回 FALSE。
同时要注意的是 null 字符('0')并不等同于 PHP 的 NULL 常量。
PHP 版本要求: PHP 4, PHP 5, PHP 7
语法:bool isset ( mixed $var [, mixed $... ] )
参数说明:$var:要检测的变量。
如果一次传入多个参数,那么 isset() 只有在全部参数都被设置时返回 TRUE,计算过程从左至右,中途遇到没有设置的变量时就会立即停止。
empty用于检查一个变量是否为空。php5.5 版本之后支持表达式了,而不仅仅是变量。gettype获取变量的类型define定义常量defined常量是否已经定义。array_key_exists(mixed key, array search)检查给定的键名或索引是否存在于数组中is_numeric(mixed var)检测变量是否为数字或数字字符串is_bool检测变量是否是布尔型is_float检测变量是否是浮点型和is_double,is_real()都一样的用法is_int检测变量是否是整数,和isInteger()一样的用法is_string检测变量是否是字符串is_object检测变量是否是一个对象is_array检测变量是否是一个数组is_null检测变量是否为Null,值是否是Null,大小写敏感。session_destroy销毁session,也可使用 session(null);进行session销毁