PHP基础

函数概念

一段封装好的代码,可以随时调用。

函数的定义格式

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 实体 '&lt;'(小于)和 '&gt;'(大于)转换为字符
  • nl2br 将字符串中”\n”转成HTML换行符“<br>”
  • strip_tags 删除HTML的标签函数
// htmlspecialchars
$str = 'This is some <b>bold</b> text.';
echo htmlspecialchars($str); // This is some &lt;b&gt;bold&lt;/b&gt; text.

// htmlspecialchars_decode
$str = 'This is some &lt;b&gt;bold&lt;/b&gt; 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销毁