PHP基础语法

这篇博客详细介绍了PHP的基础语法,包括数据类型(布尔型、整型、浮点型、字符串类型)、比较运算符、逻辑运算符、选择结构语句(if、if...else、if...elseif...else和switch)、数据类型转换、三元运算符、运算符优先级、while循环、递增递减运算符、for循环、跳转语句(break和continue)、自定义函数以及字符串函数(strlen、strrpos、substr、str_replace、explode和implode)。
摘要由CSDN通过智能技术生成

1.PHP支持的数据类型

PHP支持的三种数据类型:标量类型、复合类型、特殊类型

标量类型:

  • boolean(布尔类型)
  • Integer(整型)
  • float(浮点型)
  • String(字符串类型)

复合类型:

  • array(数组)
  • object(对象)

特殊类型:

  • resource(资源)
  • NULL(空值)

伪类型(其他类型)

  • mixed(混合类型)
  • number(数字类型)
  • callback(回调类型)
(1)布尔型

PHP中常用的类型 通常用于逻辑判断 只有true 和 false两个值,表示事物的"真"和"假",并且不区分大小写

0 表示 false , 1 表示 true

某些运算通常返回布尔值 ,并且将其传递给控制流程 用运算符(==)来比较两个运算数,相等返回 True ,否则返回False。

转换成布尔型用 bool 或者 Boolean 来强制转换 ,当转换为布尔型时,以下值会被认为是False:

布尔值False

整型值0(零)

浮点型值0.0(零)

空白字符串和字符串 “0”

没有成员变量的数组

没有单元的对象

特殊类型NULL(包括尚未设定的变量)

(2)整型

整型用来表示整数,它可以由十进制、八进制和十六进制指定,且前面加上 “+” 或 "-"符号,表示正数或负数。

  • 八进制数使用0~7表示,且数字前必须加上0
  • 十六进制数使用09与AF表示,数字前必须加上0x

示例:

$octonary = 073;//八进制
$decimal = 50;//十进制
$sexadecimal =  0x3b;//十六进制

八进制和十六进制表示的都是十进制数值59

当运算符、函数或者流程控制需要一个整型参数时,值会自动转换

还可以通过函数*intval()*来将一个值转换成整型

(3)浮点型

浮点型可以保存浮点数和整数,浮点数是程序中表示小数的一种方法,也可以是整数,在PHP中,通常有两种方式表示浮点数:标准格式和科学计数法格式。

示例:

$fnum1 = 1.759;//标准格式
$fnum2 = - 4.382;//标准格式
$fnum3 = 3.14E5;//科学计数法格式
$fnum4 = 7.469-3;//科学计数法格式 E-3 表示 (10)^(-3)
  • 不管采用哪一种格式来表,浮点数的有效位数都是 14 位
  • 有效位数就是从最左边第一个不为0的数开始,直到末尾数的个数,且不包括小数点。
(4)字符串类型

字符串是由连续的字母数字字符组成的字符序列。

PHP中通常使用单引号双引号、或者定界符3种方法定义。

  1. 单引号

    指定一个简单字符串的最简单的方法是用单引号(’)括起来。

    示例:

    echo 'Hello world';   //输出为Hello world
    

    如果字符串中有单引号,要表示这样一个单引号,和其他很多语言一样,需要用反斜线()转义。

    示例:

    echo 'I\'m Tom';   //输出为I'm Tom
    

    如果在单引号之前或字符串结尾需要出现一个反斜线(),需要用两个反斜线(\)表示。

    示例:

    echo 'Path is c:\ windows\system\\';   //输出为Path is c:\ windows\system\
    
  2. 双引号

    如果用双引号(“)括起字符串,PHP懂得更多特殊字符的转义序列

    含义序号
    \n换行
    \r回车
    \t水平制表符
    \反斜杠字符
    $美元符号
    "双引号
    \Onnn此正则表达式序列匹配一个八进制表示的字符 [0-7]{1,3}
    \xnn此正则表达式序列匹配一个十六进制表示的字符*\x[0-9A-Fa-f]{1,2}*
  3. 定界符

    另一种给字符串定界的方法就是使用定界符语法(<<<)。应该在**(<<<)**之后提供一个标识符,接着是字符串,然后同样的标识符结束字符串。

    示例:

    <?php
        //输出为:Hello World
        echo <<<abc
        Hello World
        abc;
    ?>
    

2.比较运算符

比较运算符用来对两个变量或表达式进行比较,其结果是一个布尔类型的true或false。

比较运算符及规范
运算符运算范例($x=5)结果
==等于$x==4false
!=不等于$x!=4true
<>不等于$x<>4true
===恒等$x===5true
!==不恒等$x!==‘5’true
>大于$x>5false
>=大于或等于$x>=5true
<小于$x<5false
<=小于或等于$x<=5true

在实际开发中还需要注意以下两点:

  • 对于两个数据类型不相同的数据进行比较,PHP会自动的将其转换成相同类型的数据在进行比较

    如:3 和 3.14 进行比较时,首先会将 3 转换成浮点型 3.0 ,然后再与 3.14 进行比较。

  • 运算符 “=”(全等) 与 “!”(不全等)在进行比较时,不仅要比较数值是否相等,还要比较其数据类型是否相等。而“==” 和 “!=”运算符在比较时,只比较其值是是否相等。

3.逻辑运算符

逻辑运算符就是在程序开发中用于逻辑判断的符号,其返回值类型就是布尔类型。

逻辑运算符及范例
运算符运算范例结果
&&KaTeX parse error: Expected 'EOF', got '&' at position 2: a&̲&b a 和 a和 ab都为true,结果为true,否则为false
|| a ∥ ∥ a\|\| ab a 和 a和 ab中至少有一个为true,则结果为true,否则为false(惰性运算)
!!$a若$a为false,结果为true,否则相反
xor异或$a oxr $b a 和 a和 ab一个为true,一个为false,结果为true,否则为false
and$a and $b与&&相同,但是优先级较低
or$a or $b与||相同,但优先级较低

虽然"&&"、"||“与"and”、"or"的功能相同,但是前者比后者优先级别高。

对于"与"操作和"或"操作,在实际开发中需要注意以下两点:

  • 当使用"&&"连接两个表达式时,如果左边表达式的值为false,则在右边表达式不会执行
  • 当使用"||"连接两个表达式时,如果左边表达式的值为true,则右边的表达式不会执行。(惰性运算)

4.选择结构语句

所谓选择结构语句,就是语句中的条件进行判断,进行通过不同的结果执行不同的语句。PHP中常用选择结构语句有 if、if…else、if…elseif…else和switch语句。

(1)if语句

if语句也称为单分支语句,当满足某种条件时,就进行某种处理。
语法:

if(判断条件){
	代码块;
}
  • 判断条件是一个布尔值,当该值为true时,执行“{}”中的代码块,否则不进行任何处理。
  • 当代码块中只有一条语句时,“{}”可以省略。

流程图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HBqf1Brh-1616556005883)(F:\TyporaLocalIMG\image-20210321184320074.png)]

(2)if…else语句

if…else语句也称为双分支语句,当满足某种条件时,就进行某种处理,否则进行另一种处理。
语法:

if(判断条件){
	代码块1;
}else{
	代码块2;
}
  • 当判断条件为true时,执行代码块1。
  • 当当判断条件为false时,执行代码块2。

流程图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YFQzmbbl-1616556005886)(F:\TyporaLocalIMG\image-20210321185952266.png)]

(3)if…elseif…else语句

if…elseif…else语句也称为多分支语句,用于对多种条件进行判断,并进行不同处理。

语法:

if(条件1){
	代码块1;
}elseif(条件2){
	代码块2;
}
...
elseif(条件n){
	代码段n;
}else{
	代码段n+1;
}
  • 当判断条件1为true时,则执行代码块1。
  • 否则继续判断条件2,若为true,则执行代码段2。
  • 以此类推,若所有条件都为false,则执行代码段n+1。

流程图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K2f95zCH-1616556005890)(F:\TyporaLocalIMG\image-20210321185019443.png)]

(4)switch语句

switch语句也是多分支语句,它的好处就是使代码更加清晰简洁、便于读者阅读。

语法:

switch(表达式){
	case 值1:代码块1;break;
	case 值2:代码块2;break;
	...
	default: 代码块n;}
  • 首先计算表达式的值(该值不能为数组或对象)。
  • 然后将获得的值与case中的值依次比较,若相等,则执行case后的对应代码块;若没有匹配的值,则执行default中的代码块。
  • 最后,当遇到break语句时,跳出switch语句。

5.数据类型转换

通常情况下,数据类型转换分为自动类型转换和强制类型转换。

(1)自动类型转换

所谓自动类型转换,指的是当运算需要或与期望的结果类型不匹配时,PHP将自动进行类型转换,无需开发人员做任何操作。在程序开发中,最常见的自动类型转换有四种,分别是转换布尔型、转换成 整型,转换成浮点型和转换成字符串型。

示例:

$base = '1800';
$salary = $base + 3600;
//通过 var_dump()函数打印变量的值和数据集类型
var_dump($salary);//输出结果为:int(5400)
  • b a s e 是 进 行 加 法 运 算 时 , P H P 会 自 动 将 base 是进行加法运算时,PHP会自动将 basePHPbase转换成整型
  • 所以最后输出得结果为int(5400)

当字符串型转换为整型时,若字符串是以数字开始,则使用该数值,否则转换为0。

示例:

if("123abc" == 123){
    echo'123';//输出结果为123
}
if("abc" == 0){
    echo '456';
}

(2)强制类型转换

所谓强制类型转换,就是在编程程序时手动转换数据类型,在要转换的***数据或变量之前***加上 “(目标类型)” 即可。

列举强制类型转换

强制类型功能描述
(boolean)强制转换为布尔型
(string)强转为字符串型
(interger)强转为整型
(float)强转为浮点型
(array)强转为数据
(object)强转为对象

示例:

var_dump((boolean)-5.9);  //运行结果: bool(true) 
var_dump((integer)"hell0");//运行结果:int(0)
var_dump((float)false); //运行结果:float(0)
var_dump((string)12);//string(2)"12"

6.三元运算符

三元运算符又称为三目运算符,它是一种特殊的运算符。

语法:

<条件表达式>?<表达式1>:<表达式2>
  • 先求条件表达式的值,如果为真,则返回表达式1的执行结果
  • 如果条件表达式的值为假,则返回表达式2的执行结果

7.运算符的优先级

前面介绍了PHP的各种运算符,那么若一个表达式中含有多个运算符时,首先要明确表达式中各个运算符参与运算的先后顺序,我们把这种顺序称为运算符的优先级。

结合方向运算符
new
[
++ – ~ (int) (float) (string) (array) (object) @
instanceof
!
* / %
+ - .
<< >>
== != === !== <>
&
^
|
&&
||
? :
= += -= *= /= .= %= &= |= ^= <<= >>=
and
xor
or
,

运算符的优先级由上至下递减,同一行的运算符具有相同的优先级

左结合方向表示同级运算符的执行顺序从左到右

右结合方向表示同级运算的执行顺序从右到左

在表达中中,还有一个优先级最高的运算符:圆括号(),它可以提升其内运算符的优先级。

示例:

$num1 = 4+3*2;//输出结果为10
$num2 = (4+3)*2;//输出结果为14

8.while循环语句

所谓循环语句,就是可以实现一段代码重复执行。而while循环语句,就是根据循环条件来判断是否重复执行这一段代码。

语法:

while(循环条件){
    执行语句
    ....    
}
  • {} 中 的执行语句称为循环体
  • 当循环条件为true时,则执行循环体
  • 当循环条件为false时,结束整个循环
  • 当循环条件永远为true时,会出现死循环

流程图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oK99Ytfc-1616556005895)(F:\TyporaLocalIMG\image-20210322151226444.png)]

while循环语句除了上述形式外,还有do…while形式,虽然两者的功能类似,但是当循环条件为false的情况下,while语句会结束循环,而do…while语句依然会再执行一次

语法:

do{
    执行语句
    ....
}while(循环条件);
  • 首先执行do后面 {} 中的循环体
  • 然后判断循环条件,当循环条件为true时,继续执行循环体
  • 当循环条件为false时,结束本次循环

流程图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yJXnwftE-1616556005898)(F:\TyporaLocalIMG\image-20210322152054105.png)]

9.递增递减运算符

递增递减运算符也称为自增自减运算符,它可以看作是一种特定形式复合赋值运算符。

递增递减运算符及范例:

运算符运算范例结果
++自增(前) a = 2 ; a=2; a=2;b=++$a; a = 3 ; a=3; a=3;b=3;
++自增(后) a = 2 ; a=2; a=2;b=$a++; a = 3 ; a=3; a=3;b=2;
自减(前) a = 2 ; a=2; a=2;b=–$a; a = 1 ; a=1; a=1;b=1;
自减(后) a = 2 ; a=2; a=2;b=$a–;Sa=1;$b=x2;
  • 如果运算符(++或–)放在操作数的前面,则先进行自增或自减运算,再进行其他运算。
  • 如果运算符放在操作数的后面,则先进行其他运算,在进行自增或自减运算。

10.for循环

语法:

for(表达式1;表达式2;表达式3){
    执行语句
    ....    
}
  • 表达式1用于初始化
  • 表达式2用于判断循环条件
  • 表达式3用于改变表示式1的值

流程图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wV3Vgn1j-1616556005902)(F:\TyporaLocalIMG\image-20210322153934461.png)]

11.跳转语句

跳转语句用于实现循环执行过程中程序流程的跳转,PHP中常用的跳转语句有breakcontinue语句,它们的区别在于break语句是终止当前循环,跳出循环体;而continue语句是结束本次循环的执行,开始下一轮循环的执行操作。

示例:

$sum = 0;	                      //用于保存1~100内的奇数和
for($i = 1; $i<= 100; ++$i){
	if($i % 2 == 0){	       //若为偶数,则不累加
		continue;      //结束本次循环
	}
	$sum += $i;	       //累加奇数
}
echo '$sum = '.$sum;
  • 使用continue结束本次循环,当为偶数时, i 不 进 行 累 加 , 当 为 奇 数 时 , 对 i不进行累加,当为奇数时,对 ii的值进行累加,最终输出的结果为2500。
  • 若将示例中的continue修改为break,则当$i递增到2时,该循环终止执行,最终输出的结果为1。

break语句除了上述作用之外还可以指定跳出几重循环。

语句:

break n;
  • 参数n表示要跳出的循环数量,在多层循环嵌套中,可使用其跳出多重循环。

12.自定义函数

在程序开发中,通常将某段实现特定功能的代码定义成一个函数。而开发人员根据实际功能需求定义的函数称为自定义函数。

(1)函数的定义

语法:

function 函数名([参数1,参数2,...]){
    函数体
}
  • function是声明函数时必须使用的关键字
  • 函数名的命名规则与标识符相同,且函数名是唯一的
  • 参数时外界传递给函数的值,它是可选的,当有多个参数时,各参数间使用英文下的逗号“,”分割。
  • 函数体是专门用于实现特定功能的代码

(2)函数的调用

函数在定义完成后,必须通过调用才能使函数在程序中发挥作用。函数调用非常简单,只需要引用函数名,并传入相应的参数即可。

语法:

函数名([参数1,参数2,..])
  • “[参数1,参数2,…]”是可选的,用于参数列表,其值可以是一个或多个。

(3)函数的返回值

在调用函数后,若想要得到一个处理结果,即函数的返回值,则需要使用return关键字将函数的返回值传递给调用者。

示例:

//定义sum()函数,用于求两个数的和
function sum($a,$b){
     $result = $a + $b; 
return $result;             //返回处理结果
}
echo sum(23,45);       //输出调用函数后的结果

13.字符串函数

字符串函数是PHP的内置函数,用于操作字符串,在实际开发中有着非常重要的作用。

(1)strlen()函数

srtlen()函数用于获取字符串的长度。

示例:

echo strlen('abc');//输出结果:3
echo strlen('好好学习');//输出结果:12
echo strlen('中国,你好');//输出结果:15 默认utf-8
  • strlen()函数返回值类型是int整型
  • 一个英文字符一个空格长度均为1
  • 一个中文字符长度为3

(2)strrpos()函数

strrpos()函数用于获取指定字符串在目标字符串中的最后一次出现的位置,其中,目标字符串中第1个字符的位置从0开始。

示例:

echo strrpos('itcast','a');//输出结果:3
echo strrpos('itcase','c',1);//输出结果:2
echo strrpos('itcase','t',-4);//输出结果:1
  • strrpos()函数的返回值类型是int整型,但***找不到指定字符串时,返回值布尔型 false.***
  • 第一个参数是目标字符串。
  • 第二个参数是指定字符串。
  • 第三个参数是字符串开始查找的位置,它有三种情况,具体如下:
    • 省略第三个参数时,表示从目标字符串的第0个位置开始向后查找指定字符串
    • 第三个参数为正数n时,表示目标字符串的第n个位置开始***向后***查找指定字符串
    • 第三个参数为负数m时,表示目标字符串的尾部第m个位置开始***向前***查找指定字符串。

相关函数:

  • stripos() 查找字符串在另一字符串中第一次出现的位置( 不区分大小写)
  • strpos()查找字符串在另一字符串中第一次出现的位置(区分大小写)
  • strripos() - 查找字符串在另一字符串中最后一次出现的位置(不区分大小写)

(3)substr()函数

substr()函数用于获取字符串的子串。

示例:

echo substr('itcast',2);//输出结果:cast
echo substr('itcast',0,2)//输出结果:it
echo substr('itcast',3,-1);//输出结果:as
echo substr('itcase',-4,-1);//输出结果:cas
  • substr()函数的返回值是一个字符串型。
  • substr()函数的第一个参数表示待处理的字符串。
  • substr()函数的第二个参数表示字符串开始截取的位置,当它为负数m时,表示从处理字符的结尾处向前数第m个字符开始
  • substr()函数的第三个参数表示截取字符串的长度,当其省略时,表示截取到字符串的结尾,当其为负数m时,表示从截取后的字符串的末尾处去掉m个字符。

(4)str_replace()函数

str_replace()函数用于字符串中的某一些字符进行替换操作。

示例:

echo str_replace('e','E','welcome',$conunt);//输出结果:wElcomE
echo $count;//输出结果:2
  • srt_replace()函数的第一个参数表示目标字符串。
  • str_replace()函数的第二个参数表示替换的字符串。
  • str_replace()函数的第三个参数表示执行替换的字符串
  • str_replace()函数的第四个参数是一个可选的参数,用于保存字符串被替换的次数。

(5)explode()函数

explode()函数可以使用一个字符串分割另一个字符串。

示例:

//① 输出结果:array(3) { [0]=> string(2) "ba" [1]=> string(1) "a" [2]=> string(1) "a" }   
var_dump(explode('n','banana'));
//② 输出结果:array(2) { [0]=> string(2) "ba" [1]=> string(3) "ana" } 
var_dump(explode('n','banana',2));
//③ 输出结果: array(1) { [0]=> string(2) "ba" } 
var_dump(explode('n','banana',-2));
//④ 输出结果:array(1) { [0]=> string(6) "banana" } 
var_dump(explode('n','banana',0));
//⑤ 输出结果:array(1) { [0]=> string(6) "itcast" } 
var_dump(explode('p','itcast'));
//⑥ 输出结果:bool(false) 
var_dump(explode('','itcast'));
  • explode()函数的返回值类型是数组类型。所谓数组类型就是可以存储一系列数据的变量类型。
  • 第一个参数表示分隔符
  • 第二个参数表示要分割的字符串。
  • 第三个参数是可选的,表示返回的数组中最多包含的元素个数,当其为负数m时,表示返回除了最后的m个元素外的所有元素,当其为0时,则把它当做1处理。

(6)implode()函数

implode()函数用于指定的连接符将数组拼接成一个字符串。

示例:

$arr = array(1,2,3);//定义一个数组
//echo var_dump($arr);
echo implode(',',$arr);//输出结果:1,2,3
echo implode('.',$arr);//输出结果:1.2.3
  • implode()函数的第一个参数表示连接符。
  1. “ba” }
    var_dump(explode(‘n’,‘banana’,-2));
    //④ 输出结果:array(1) { [0]=> string(6) “banana” }
    var_dump(explode(‘n’,‘banana’,0));
    //⑤ 输出结果:array(1) { [0]=> string(6) “itcast” }
    var_dump(explode(‘p’,‘itcast’));
    //⑥ 输出结果:bool(false)
    var_dump(explode(’’,‘itcast’));

* explode()函数的返回值类型是**数组类型**。所谓数组类型就是可以存储一系列数据的变量类型。
* 第一个参数表示分隔符
* 第二个参数表示要分割的字符串。
* 第三个参数是可选的,表示返回的数组中最多包含的元素个数,当其为负数m时,表示返回除了最后的m个元素外的所有元素,当其为0时,则把它当做1处理。

(6)implode()函数

implode()函数用于指定的连接符将数组拼接成一个字符串。

示例:

```php
$arr = array(1,2,3);//定义一个数组
//echo var_dump($arr);
echo implode(',',$arr);//输出结果:1,2,3
echo implode('.',$arr);//输出结果:1.2.3
  • implode()函数的第一个参数表示连接符。
  • implode()函数的第二个参数表示待处理的数组。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值