PHP入门

PHP基本语法

PHP代码被<?PHP ?>所包裹,变量名以$开头,每条代码以 ; 号结尾
变量名区分大小写,一般以字母或下划线开头,不可以用数组开头

<?PHP $name = 'Mary'; ?>

1
2
3
4
变量与基本数据类型

PHP中的数据类型

int 整型
$num = 120;
float 浮点型
$num = 1.2;
string 字符串
包含在双引号或单引号中的内容
$str = ‘name’;
array 数组类型
用来存储一组数据,如用来存储一个序列或者一个人的基本信息
a r r = a r r a y ( 1 , 2 , 3 , 4 , 5 , 6 ) ; 使 用 以 上 方 法 定 义 的 数 组 取 值 时 通 过 数 组 元 素 下 标 来 取 值 , 数 组 下 标 是 从 0 开 始 的 , 如 arr = array(1,2,3,4,5,6); 使用以上方法定义的数组取值时通过数组元素下标来取值,数组下标是从0开始的,如 arr=array(1,2,3,4,5,6);使0arr[1]的值为2;
a r r = a r r a y ( ′ n a m e ′ = > ′ M a r y ′ , ′ a g e ′ = > 22 , ′ s e x ′ = > ′ F ′ ) ; 使 用 以 上 方 法 定 义 的 数 组 取 值 时 通 过 数 组 键 来 取 值 , 如 arr = array('name' => 'Mary', 'age' =>22, 'sex' => 'F') ; 使用以上方法定义的数组取值时通过数组键来取值,如 arr=array(name=>Mary,age=>22,sex=>F);使arr[‘name’]值为Mary。
混合定义的数组中,取值时有所不同
a r r = a r r a y ( ′ b ′ , ′ a d ′ , 4 = > ′ M a r y ′ , ′ a b c ′ , ′ d e f ′ ) ; 当 取 数 组 中 最 后 一 个 元 素 的 值 时 , 若 使 用 索 引 为 arr=array('b','ad', 4 => 'Mary', 'abc' ,'def'); 当取数组中最后一个元素的值时,若使用索引为 arr=array(b,ad,4=>Mary,abc,def);使arr[3]会取不到数组中最后一个元素,由于他前边被定义了键4,所以若要取最后一个元素的值需要使用 a r r [ 6 ] 来 取 值 。 b o o l 布 尔 类 型 f a l s e 和 t r u e , 即 真 或 假 arr[6]来取值。 bool 布尔类型 false和true,即真或假 arr[6]boolfalsetruebo = true;
object 对象类型
使用new关键字创建的对象,如创建一个mysql连接的对象
$conn = new mysqli(‘server’,‘user’,‘password’);
resource 资源型
使用特殊函数得到,如文件资源
$f = fopen(‘filename’,‘r’);
变量的定义与使用:

$name = ‘Mary’;
echo “name的值为 KaTeX parse error: Undefined control sequence: \n at position 7: name !\̲n̲"; echo "name的值…name}!\n”;
echo ‘name的值为’. n a m e . ′ ! ′ . P H P E O L ; e c h o ′ n a m e 的 值 为 name.'!'.PHP_EOL; echo 'name的值为 name.!.PHPEOL;echonamename\n’;
1
2
3
4
5
上例中定义了一个名为name,值为Mary的变量
在PHP代码中,变量的定义以 $ 符号开始,每行代码以封号 ’ ; ’ 结束
echo 是一个输出关键字,输出KaTeX parse error: Undefined control sequence: \n at position 201: …PHP_EOL是PHP中的常量\̲n̲,即可以输出换行符。 在定义变…n = ‘\n’; 该变量只表示\n字符本身,而不是换行。
如图为以上代码输出:
在这里插入图片描述

变量的类型

可变变量

$a = 12;
$b = ‘a’;
c = ′ b ′ ; e c h o ′ c = 'b'; echo ' c=b;echo b 值 为 : ′ . b值为:'. b. b . P H P E O L ; e c h o ′ b.PHP_EOL; echo ' b.PHPEOL;echo c 值 为 : ′ . c值为:'. c. c . P H P E O L ; e c h o ′ c.PHP_EOL; echo ' c.PHPEOL;echo c 值 为 : ′ . c值为:'. c. c . P H P E O L ; 123456 以 上 代 码 存 在 这 样 的 关 系 c.PHP_EOL; 1 2 3 4 5 6 以上代码存在这样的关系 c.PHPEOL;123456b变量的值为 a 变 量 的 名 称 , a变量的名称, ac的值为$b变量的名称;
KaTeX parse error: Can't use function '$' in math mode at position 5: b意为取$̲b得值作为a变量名,求b=$a=12
$KaTeX parse error: Can't use function '$' in math mode at position 5: c意为取$̲c的值作为变量名,求 c = c= c= b = b= b=a=12
输出结果如图:
1
2
3
4
在这里插入图片描述

外部变量

可以获取用户提交信息等,可以在代码文件任意位置访问
以下几个变量数据类型皆为数组
1
2
变量名 作用 使用
$_GET 获取用户通过GET方式提交的数据 $_GET[‘name’]
$_POST 获取用户通过POST方式提交的数据 $_POST[‘name’]
$_REQUEST 获取用户通过GET或POST方式提交的数据 $_REQUEST[‘name’]
$_FILES 获取用户上传文件信息 $_FILES[‘f’]
$_SERVER 获取服务器或用户相关信息 $_SERVER[’'REMOTE_ADDR]
$_COOKIE 获取用户提交的cookie $_COOKIE[‘user’]
$_SESSION 获取session会话信息 $_SESSION[‘user’]
全局变量

即可以全局访问的变量,可以在当前代码文件除函数内部外任意位置访问的变量
若需要在函数内部访问,需要使用 global 关键字声明变量
1
2
$name = ‘Mary’;

function get_name(){
echo ‘ n a m e 的 值 为 : ′ . name的值为:'. name.name.’!’;
}
get_name();

echo ‘函数外部 n a m e 的 值 为 : ′ . name的值为:'. name.name.’!’.PHP_EOL;
1
2
3
4
5
6
7
8
如图:
函数内未使用global声明全局变量,在函数内部无法访问到全局变量$name,输出为空:
在这里插入图片描述
使用 global 声明全局变量

$name = ‘Mary’;

function get_name(){
global $name;
echo ‘函数内部 n a m e 的 值 为 : ′ . name的值为:'. name.name.’!’.PHP_EOL;
}
get_name();

echo ‘函数外部 n a m e 的 值 为 : ′ . name的值为:'. name.name.’!’.PHP_EOL;
1
2
3
4
5
6
7
8
9
如图:
函数内使用global声明全局变量,在函数内部可以访问到全局变量$name
在这里插入图片描述

局部变量

只能在函数内部访问
1
function get_name(){
$name = ‘Mary’;
echo ‘函数内部 n a m e 的 值 为 : ′ . name的值为:'. name.name.’!’.PHP_EOL;
}
get_name();

echo ‘函数外部 n a m e 的 值 为 : ′ . name的值为:'. name.name.’!’.PHP_EOL;
1
2
3
4
5
6
7
在这里插入图片描述

静态变量

在函数内使用static声明静态变量
函数内的局部变量会在函数调用结束后被释放,下一次调用函数时局部变量初始化,不保存上次调用的执行结果。
在使用static声明静态变量后,函数调用后会保存该变量的值,下一次调用仍使用上一次调用结束时的值。
静态变量的使用:
C语言中的strtok(char*,const char*)函数通过静态函数保存了字符串分割的指针位置,方便下次调用再次进行分割字符串
1
2
3
4
5
function get_num(){
$s=1;
$s++;
echo $s.PHP_EOL;
}
get_num();
get_num();
1
2
3
4
5
6
7
如图为局部变量,两次调用函数的输出结果
在这里插入图片描述

function get_num(){
static $s=1;
$s++;
echo $s.PHP_EOL;
}
get_num();
get_num();
1
2
3
4
5
6
7
如图为静态变量,两次调用函数的结果
在这里插入图片描述

常量的定义与使用

常量不可更改,使用define(‘NUM’,23) 来定义,常量通常大写
常用的魔法常量:

//返回执行代码所在的行号
echo LINE;
//返回执行代码所在的文件完整路径
echo FILE;
返回执行代码所在的文件目录
echo DIR;
1
2
3
4
5
6
输出语句的使用

echo 输出语句,可以输出多个字符串,变量,以及函数返回值
$name = ‘Mary’;
echo phpinfo();
echo ‘为什么?’,‘怎么做?’;
echo $name;
1
2
3
4
print 一次只能输出一个字符串,变量,函数返回值,执行效率也没有echo高
print $name;
print phpinfo();
print ‘why?’;
1
2
3
print_r() 可以输出变量,字符串,主要可以用它输出数组
a r r = [ 1 , 23 , 4 , 5 ] ; p r i n t r ( arr = [1,23,4,5]; print_r( arr=[1,23,4,5];printr(arr);
//函数输出
Array
(
[0] => 1
[1] => 23
[2] => 4
[3] => 5
)
1
2
3
4
5
6
7
8
9
10
var_dump() 不光可以输出变量,字符串,数组,还可以输出他们的数据类型
a r r = [ 1 , 23 , 4 , 5 ] ; v a r d u m p ( arr = [1,23,4,5]; var_dump( arr=[1,23,4,5];vardump(arr);
//函数输出
Array
(
[0] => 1
[1] => 23
[2] => 4
[3] => 5
)
1
2
3
4
5
6
7
8
9
10
流程控制语句

流程控制语句用于控制程序执行流程,根据不同的条件执行不同的代。
判断括号中的条件,若条件为真,执行花括号中的代码,若为假,跳过花括号中的代码继续往下执行。
在PHP中:
true/TRUE,非0值,非空值为真
false/FALSE,0,null,空值(空数组,空字符串’’)
流程控制语句格式:

if 语句
//1.可以写单条if判断
if(条件){
}

//2.if…else组合,条件成立输出1,否则输出0
if(条件){
echo 1;
}else{
echo 0;
}

//3.if…elseif…elseif…else,elseif可以嵌套多层
if(条件1){
echo 1;
}elseif(条件2){
echo 2;
}elseif(条件3){
echo 3;
}else{
echo 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
三元运算符的使用

$n = 3>4 ? ‘a’:‘b’;
该语句同
if(3>4){
$n = ‘a’;
}else{
KaTeX parse error: Expected 'EOF', got '}' at position 10: n = 'b'; }̲ 1 2 3 4 5 6 7 …str) 中的 s t r 一 致 , 就 执 行 c a s e 之 后 的 代 码 内 容 , 直 到 遇 到 b r e a k , 或 者 s w i t c h 代 码 块 结 束 , 若 str一致,就执行case之后的代码内容,直到遇到break,或者switch代码块结束,若 strcasebreakswitchstr和任何case判断都不匹配,执行default中的代码。
s t r = ′ 下 雨 ′ ; s w i t c h ( str = '下雨'; switch( str=;switch(str){
case ‘下雪’:
echo ‘多加棉衣’;
case ‘下雨’:
echo ‘需要带伞’;
break;
case ‘不下雨’:
echo ‘不需要带伞’;
break;
default: echo ‘啥啥都没,要什么自行车!’;
}
1
2
3
4
5
6
7
8
9
10
11
12
代码解析:
以上代码,输出为:需要带伞
若$str = ‘下雪’;输出为:多加棉衣需要带伞,由于第一个case没有break,所以他会继续向下执行,直到遇到break或者执行到switch代码块结束。
循环语句

循环语句分为4种:

while循环
while(条件){
}
1
2
do…while
do{
}while(条件)
1
2
do…while语句与while语句的区别:
do…while语句先执行do语句代码块中的内容,然后执行while语句进行判断是否进入下一次循环;
所有do…while语句中do语句的代码块至少执行一次
for
//for循环中先通过表达式1设置一个初始值
//然后判断是否符合循环条件
//若循环条件符合,在执行完当前循环后,执行表达式2的操作
//其中表达式1可以写在for循环之前,表达式2可以放for循环循环体内,但是for循环的格式要报错不变,for(;条件;)
for(表达式1;条件; 表达式2){
}
1
2
3
4
5
6
foreach
a r r = a r r a y ( 1 , 2 , ′ n a m e ′ = > ′ M a r y ′ ) / / 用 来 遍 历 数 组 , 输 出 arr = array(1,2,'name'=>'Mary') //用来遍历数组,输出 arr=array(1,2,name=>Mary)//value为数组中的每个元素的值
foreach($arr as $value){
echo KaTeX parse error: Expected 'EOF', got '}' at position 8: value; }̲ //输出value为数组中的每个元素的键及其值,普通数组的键为其索引值
foreach($arr as $key => KaTeX parse error: Expected '}', got 'EOF' at end of input: value){ echo "key = $value"
}
1
2
3
4
5
6
7
8
9
常用在循环中的几个关键字,continue跳过之后的执行代码,break跳出当前循环
n u m = 0 ; w h i l e ( num = 0; while( num=0;while(num<8){
n u m + + ; i f ( num++; if( num++;if(num==2){
echo’跳过以下代码’.PHP_EOL;
continue;
}elseif( n u m = = 4 ) e c h o ′ 跳 出 循 环 ′ . P H P E O L ; b r e a k ; e c h o ′ num==4){ echo '跳出循环'.PHP_EOL; break; } echo ' num==4)echo.PHPEOL;break;echonum = '.$num.PHP_EOL;
}

1
2
3
4
5
6
7
8
9
10
11
12
13
箭头所指为循环中因continue和break而未输出的内容
在这里插入图片描述

函数创建与调用

函数由函数名,形参,函数体组成,通过function关键字创建
函数调用,使用函数名,传递正确的参数即可调用
$name = ‘Mary’;
a g e = 12 f u n c t i o n f u n c ( age = 12 function func( age=12functionfunc(A,$B){
echo $A.PHP_EOL;
echo $B.PHP_EOL;
return 0; //返回值,调用者可使用变量接收返回值
}
r e t = f u n c ( ret = func( ret=func(name,$age);
1
2
3
4
5
6
7
8
常用运算符

算术运算符

  • 加 - 减 * 乘 / 除 %取余
    在编写代码时若某变量做自增和自减运算,可以编写为 n u m + + 或 num++或 num++num–
    $num++ = n u m + 1 , num+1, num+1,num-- = n u m − 1 自 增 和 自 减 还 可 以 写 + + num-1 自增和自减还可以写++ num1++num和–$num
    n u m + + 和 + + num++和++ num++++num的区别:这两种自增的写法单独写的时候没有区别,但是在自增的同时进行赋值的话会有一些区别;
    $a = n u m + + 会 先 执 行 num++会先执行 num++a = n u m 的 赋 值 操 作 , 然 后 做 num的赋值操作,然后做 numnum+1操作
    a = + + a = ++ a=++num会先执行 n u m + 1 的 赋 值 操 作 , 然 后 做 把 num+1的赋值操作,然后做把 num+1num+1的值赋值给$a

逻辑运算符

逻辑运算符常用在条件判断中
and 与运算,必须所有条件成立才为真
在这里插入图片描述
or 或运算,只要有一个条件为真即为真
在这里插入图片描述
! 非运算取反
在这里插入图片描述
常用函数

判断变量类型的函数

is_int(); 判断是否时整型数据
is_bool(); 判断是否时bool类型
is_float(); 判断是否时浮点类型
is_string(); 判断是否时字符串类型
is_array(); 判断是否时数组
is_object(); 判断是否是对象类型
is_null(); 判断是否为空类型
is_resource(); 判断是否是资源类型
is_scalar() ; 判断是否为标量,即是否是整型、浮点型、字符串、布尔型
is_numeric(); 判断是否为数值型,如:‘123’为数值型
is_callable(); 判断是否为函数
数值计算函数

//返回随机数
rand();
mt_rand();
//计算绝对值,返回29
abs(-29);
//舍去小数,返回12
floor(12.9);
//浮点数取余,返回0.1
fmod(7.6,2.5);
//求2的3次方,返回8
pow(2,3);
//返回平方根,3
sqrt(9);
//返回最大值4
max(1,2,3,4);
//返回圆周率
pi();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
字符串处理函数

字符串编码:
iconv(原字符串编码,转换输出的字符串编码,字符串)
去除字符中的字符
//去除两端多余的空格,换行,制表符等,可以通过第二个参数指定去除的内容
trim(’ asd ‘,’ \t\n\r’);
rtrim(); //去除右端指定字符
ltrim(); //去除左端指定字符

1
2
3
4
5
分割字符串
//分割字符串,以几个字符为一组进行分割,返回数组
str_split(‘abcd’,2);

//分割字符串,若第二次需继续分割,则只需传递分割字符即可,如字符串分割完毕,返回false
$str = ‘a,b,c,d’;
c = s t r t o k ( c = strtok( c=strtok(str,’,’);
while($c){
echo $c;
$c = strtok(’,’);
}

//通过分割符将字符串分割,返回数组
explode(’,’,‘a,v,sa,asd’)
1
2
3
4
5
6
7
8
9
10
11
12
13
字符串大小写转换与填充排版
//填充字符串,根据指定字符串长度使用指定字符进行填充,默认向右填充,使用四个参数指定方向
str_pad(‘abc’,10,‘0’,STR_PAD_RIGHT);
//将字符串全部转换为小写
strtolower(‘ABC’);
//将字符串全部转换为大写
strtoupper(‘abc asd’);
//将字符串首字母转换为大写
ucfirst(‘abc asd’);
//将字符串每个单词首字母转换为大写
ucwords(‘abc def’);
1
2
3
4
5
6
7
8
9
10
字符串连接
//使用 - 连接数组中每个元素
join(’-’,$arr);
1
2
字符串截取
///表示字符索引为1的位置截取两个字符,字符索引从0开始
substr(‘abcd’,1,2); //返回bc
substr(‘abcd’,2,-1); //返回c

//返回指定字符串在指定字符串中到结束位置的字符
subchr(‘abcdef’,‘c’); //返回cdef
subrchr(‘abcdef’,‘c’); //返回cdef
1
2
3
4
5
6
7
字符串替换
//将字符串qwe中的q替换为c
str_replace(‘q’,‘c’,‘qwe’);
//不区分大小写进行替换
str_ireplace(‘q’,‘c’,‘Qwe’);
1
2
3
4
字符统计
//统计as在字符串asdasdasd中出现的次数,返回3
substr_count(‘asdasdasd’,‘as’);
//返回字符串字节长度,返回3
strlen(‘asd’);
1
2
3
4
获取字符在字符串中的位置
//返回b第一次出现的abcdb字符串中的位置,返回1
strpos(‘abcdb’,‘b’);
//返回b第一次出现的abcdb字符串中的位置,返回1,不区分大小写
stripos(‘aBcdB’,‘b’);
//处理多字节字符,获取子串在字符串中的位置
mb_strpos();
1
2
3
4
5
6
安全字符处理
//把字符转换为html实体
htmlentities(’

array_shift();弹出数组中第一个元素
array_pop();弹出数组中最后一个元素
$arr = [1,‘a’=>‘97’,‘c’];

echo array_shift( a r r ) . P H P E O L ; e c h o a r r a y p o p ( arr).PHP_EOL; echo array_pop( arr).PHPEOL;echoarraypop(arr).PHP_EOL;
print_r($arr);

输出结果:
1
c
Array
(
[a] => 97
)
1
2
3
4
5
6
7
8
9
10
11
12
13
array_unshift();压入元素到数组第一个
array_push();压入元素到数组最后一个
$arr = [1,2];

array_unshift( a r r , ′ a ′ ) ; a r r a y p u s h ( arr,'a'); array_push( arr,a);arraypush(arr,‘b’);
print_r($arr);

输出结果:
Array
(
[0] => a
[1] => 1
[2] => 2
[3] => b
)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
range();返回一个包含指定范围的数组
print_r(range(1,4));

输出结果:
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
)
1
2
3
4
5
6
7
8
9
10
array_merge();将多个数组合并为一个数组,两数组相加有也可以合并数组
$arr1 = [1,2];
a r r 2 = [ ′ n a m e ′ = > ′ M a r y ′ ] ; p r i n t r ( a r r a y m e r g e ( arr2 = ['name'=>'Mary']; print_r(array_merge( arr2=[name=>Mary];printr(arraymerge(arr1,$arr2));

输出结果:
Array
(
[0] => 1
[1] => 2
[name] => Mary
)
1
2
3
4
5
6
7
8
9
10
11
in_array();检查数组中是否有某元素
a r r = [ 1 , 2 , ′ n a m e ′ = > ′ M a r y ′ ] ; v a r d u m p ( i n a r r a y ( ′ M a r y ′ , arr = [1,2,'name'=>'Mary']; var_dump(in_array('Mary', arr=[1,2,name=>Mary];vardump(inarray(Mary,arr));

输出结果:
bool(true)
1
2
3
4
5
array_rand();返回数组中一个随机的值(键)
a r r = [ 1 , ′ n a m e ′ = > ′ M a r y ′ , ′ a g e ′ = > ′ 2 2 ′ , 3 ] ; p r i n t r ( a r r a y r a n d ( arr = [1,'name'=>'Mary','age'=>'22',3]; print_r(array_rand( arr=[1,name=>Mary,age=>22,3];printr(arrayrand(arr));

输出结果:
age
1
2
3
4
5
array_unique();个数组去重
a r r = [ 1 , 2 , 1 , ′ n a m e ′ = > ′ M a r y ′ , ′ a g e ′ = > ′ 2 2 ′ , 3 ] ; p r i n t r ( a r r a y u n i q u e ( arr = [1,2,1,'name'=>'Mary','age'=>'22',3]; print_r(array_unique( arr=[1,2,1,name=>Mary,age=>22,3];printr(arrayunique(arr));

输出结果:
Array
(
[0] => 1
[1] => 2
[name] => Mary
[age] => 22
[3] => 3
)

©️2020 CSDN 皮肤主题: 游动-白 设计师:上身试试 返回首页