PHP基础知识

it2024-12-02  3

PHP注释的应用

1.c++风格的单行注释(//)

2.c风格的多行注释(/* */)

3.shell风格的注释(#)

注意:多行注释是不允许进行嵌套操作的,单行注释中的内容不要出现 ?>标志,因为解释器会认为PHP脚本结束,而去执行 ?>后面的代码

运行时页面可能遇到的:

页面无法显示:
没有打开phpstudy或服务器没有开启,localhost指向的是D:phpstudy/WWW,所以phpstudy文件名不可修改
页面出现404找不到

1.文件名被修改

2.电脑中含有多个phpstudy文件(全部删除安装一次)

数据类型

美元符号 是 变 量 的 标 识 符 , 所 有 变 量 都 以 是变量的标识符,所有变量都以 符开头,无论是声明变量还是使用变量都应使用$符,变量的数据类型取决于变量的值

PHP一共支持8种原始类型

1.4种标量类型

(1)boolean(布尔型)

这是最简单的类型,只有两个值:真(true)、假(false),其中true和false是PHP的内部关键字

在PHP中不是只有false的值才为假,在一些特殊情况下,如0、0.0、“0”、“ ”、只声明没有赋值的数组等也被认为是false。

(2)字符串型(string)

字符主要包含以下几种类型:

数字类型,如1、2、3

字母类型,如a、b、c

特殊字符,如#、$、%、^

不可见字符,如\n、\r、\t

不可见字符是比较特殊的一组字符,它用来控制字符串格式化输出,在浏览器上不可见,只能看到字符串输出的结果。

字符串就是连续的字符序列,可以是计算机能表示的一切字符的合集,由数字、字母和符号组成,字符串中的每一个字符占用一个字符节,有3种定义字符串的方式:

单引号:$a=‘字符串’;

双引号:$a=“字符串”;

界定符:

$string=<<<str 要输出的字符串 str;

单引号与双引号的区别

双引号:如果存在变量的话,输出变量的值

单引号:原样输出(按普通字符串输出)

对转义字符的使用。使用单引号时,只需对 ‘ 进行转义即可,但是用双引号时,还要注意 “ $等字符的使用,这些特殊字符都要通过转义符 \ 来显示

(3)整型(integer)

整型只能包含整数,这些整数可以是正数或负数,可以用十进制、八进制、十六进制来表示。如果用八进制、数字前面必须加0.如果用十六进制,则需要加0x

如果八进制种出现了非法数字(8和9),则后面的数字会被忽略掉

(4)float/double(浮点型)

浮点型用于存储数字,和整型不同的是它有小数位,它提供的精度比整数大得多,浮点型默认有两种书写格式:

标准格式: 3.1415 -35.8

科学记数法格式: 3.58E1 849.72E-3

2.两种复合类型

(1)数组(array)

一组数据的集合,它把一系列数据组织起来,形成可操作的整体。数组中可以包括很多数据,如标量数据、数组、对象、资源以及php中支持的其他语法结构等。

数组中的每一个数据称为一个元素,元素包括索引(键名)和值两个部分。元素的索引可以由数字或字符串组成,元素的值可以是多种数据类型。定义数组的语法格式如下:

不指定下标:

$array=array("value1","$value2","$value3"); echo $array[下标]; 或 var_dump($array);

下标对应值:

$array=array("index1"=>"value1","index2"=>"$value2","index3"=>"$value3");

(2)对象(object)

对象是类的实例,使用new命令来创建

3.两种特殊类型

(1)资源(resource)

资源是一种特殊变量,又叫做句柄,保存到外部资源的一个引用。资源是通过专门的函教来建立和使用的。在使资源时.系统会自动启用垃圾回收机制,解放不再使用的资源,避免内存消耗殆尽。

(2)空值(null)

空值表示没有为该变量设置任何值,另外、空值不区分大小写。被赋予空值的情况有3种:没有赋任何值,被赋值null、被unset()函数处理过的变量。

unset()函数的作用:从内存中删除变量。 没有返回值

is_null()函数的作用:判断变量是否为null,如果变量为null,则返回true,反之,则返回false。

转换数据类型

**允许转换的类型:**boolean string integer float array object

**转换成boolean型:**null、0和未赋值的变量或数组会被转换成false,其他的为真;

**转换成整型:**布尔型的false转换成0,true转换成1,浮点型的小数部分被舍去,字符型如果以数字类型开头就截取到非数字位,否则输出0.

类型转换还可以通过settype函数来完成,该函数可以将指定的变量转换成指定的数据类型。

bool settype(mixed var,string type); 例:$str="13"; settype($str,"int"); var_dump($str);

使用强制类型转换(操作符)和settype()函数的区别:

使用强制类型转换能直接输出转换后的变量类型,并且原变量不会发生任何变化,而使用settype()函数原变量会被改变。

检测数据类型

PHP内置了检测数据类型的系列函数,可以对不同类型的数据进行检测,判断其是否属于某个类型,如果符合则返回true,否则返回false。

方法作用is_srting检查变量是否为字符串类型is_null检查变量是否为nullis_object检查变量是否为对象类型is_bool检查变量是否为布尔类型is_numberic检查变量是否为数字或由数字组成的字符串is_float/double检查变量是否为浮点类型is_integer/int检查变量是否为整数is_array检查变量是否为数组

常量

**概述:**常量可以理解为值不变的量。常量被定义后,在脚本的其他任何地方都不能改变。

**组成规则:**一个常量由英文字母、下划线和数字组成,但数字不能作为首字母出现,常量名最好是大写的。

**定义:**define(常量名称,常量值,[是否大小写敏感]) //默认敏感

获取常量值:

(1)使用常量名直接获取值

(2)使用constant()函数 constant(常量名称) 参数也可以为存储常量名的变量

**判断常量是否定义:**defined(常量名称);

如果定义了两个相同的常量,那么前者起作用

PHP中可以使用预定义常量获取PHP中的信息,常用的预定义常量有

常量名作用__FILE__默认常量,PHP程序文件名(大小写不敏感)__LINE__默认常量,PHP程序行数(大小写不敏感)PHP_VERSION内建常量,PHP程序版本,如3.0.8_dev(敏感)PHP_OS内建常量,执行PHP解析器的操作系统名称,如Windows(敏感)

常量与变量的区别

(1)常量前面没有$符号 (2)常量通过define函数定义,不能通过赋值语句 (3)常量可以在任何地方使用,但是变量有作用域的问题 (4)常量一旦定义,常量值就不能发生改变或者重新定义,但是变量可以通过赋值的方式重新定义 (5)常量的值只能是标量数据类型,但是变量支持8种数据类型

变量

**概念:**变量是指程序执行过程中数值可以变化的量。变量通过一个名字(变量名)来标识。系统为程序中的每一个变量分配一个存储单元,变量名实质上就是计算机内存单元的命名。因此,借助变量名即可访问内存中的数据。

**赋值:**变量赋值是指给变量一个具体的数据值。

$name=value;

例:$c=123; $a=“str”;

除了直接赋值外,还有两种方式可以为变量声明或赋值:

(1).变量间的赋值 例:$a=123; b = b= b=a; 指赋值后两个变量使用后个自的内存,互不打扰。

(2).引用赋值

引用的概念是用不同的名字访问同一个变量的内容。当改变其中一个变量的值时,另一个也会跟着发生变化,使用&符号来表示引用。

引用赋值和其他赋值的区别:

其他赋值只是将值赋值给其他变量,当某个变量发生改变时,不会影响其他变量。引用赋值是将一个值取两个变量名,当改变其中一个变量的值时,另一个也会跟着发生变化。

isset()函数:检查变量是否定义

变量作用域

变量在使用时,要符合变量的定义规则。变量必须在有效范围内使用,如果变量超出有效范围,则变量也就失去其意义了。

(1)局部变量

在函数内部定义的变量,其作用域是所在函数

(2)全局变量

被定义在所有函数以外的变量,作用域是整个PHP文件,但是在自定义的函数中是不可以使用的。

在函数内部使用全局变量的方法

(1) global变量名 (2)$GLOBAL(变量名) (3) use(变量名)function fun(use(变量名){} (4)设置成超全局变量

(3)超全局变量

作用域在整个PHP文件,在自定义的函数中也可以使用。

(4)静态变量

能够在函数调用结束后仍然保留变量值,当再次回到其作用域时,又可以继续使用原来的值。而一般的变量在函数调用结束后,其存储的数据会被清除,所占的内存空间被释放。使用静态变量时,先用关键字static来声明变量。

(5)可变变量

可变变量是一种独特的变量,它允许动态改变一个变量的名称(变量的变量名可以动态的设置和使用)

原理:该变量的名称由另一个变量的值来确定,实现过程就是在变量的前面再多加一个$

例:$h=“hello”; $hello=“word”; echo $$h; 输出的结果为word

(6)预定义变量

可以获取到用户会话、用户操作系统的环境和本地操作系统的环境等信息

变量作用$_SERVER[‘SERVER_ADDR’]当前运行脚本所在服务器的IP地址$_SERVER[‘SERVER_NAME’]当前运行脚本所在服务器主机的名称$_COOKIE通过HTTPcookie传递到脚本的信息$_SESSION包含所有会话变量有关的信息$_POST包含通过POST方法传递的参数的相关信息$_GET包含通过GET方法传递的参数的相关信息$GLOBALS由自己定义全局变量组成的数组

运算符

1.算数运算符

名称操作符举例加法+ a + a+ a+b减法- a − a- ab乘法* a ∗ a* ab除法/ a / a/ a/b取余(模以)% a a% ab递增++ a + + + + a++ ++ a++++a递减– a − − − − a-- -- aa

(1).在算术运算符中使用%求余,如果被除数($a)是负数,那么取得的结果也是一个负值

(2).递增、递减运算符,主要对单独一个变量来操作的,递增、递减有两种使用方法:

++、–在前,即先加减再执行其他语句,++、–在后,即先执行其他语句再加减。

2.字符串运算符

字符串运算符只有一个,即英文句号“.”,它将两个字符串连接起来,结合成一个新的字符串。

3.赋值运算符

操作符号举例展开形式意义赋值= a = a= a=b$a=3将右边的值赋给左边加+= a + = a+= a+=b a = a= a=a+$b左边的值加右边的值再赋值给左边减-= a − = a-= a=b a = a= a=a-$b左边的值减右边的值再赋值给左边乘*= a ∗ = a*= a=b a = a= a=a*$b左边的值乘右边的值再赋值给左边除/= a / = a/= a/=b a = a= a=a/$b左边的值除右边的值再赋值给左边连接字符.= a . = a.= a.=b a = a= a=a.$b左边的字符连接上右边的字符再赋值给左边取余数%=%a%=$b a = a= a=a%$b左边的值对右边的值取余数再赋值给左边

4.逻辑运算符

逻辑运算符用来组合逻辑运算的结果,是程序设计中一组非常重要的运算符。

运算符举例结果为真&&或and(逻辑与)KaTeX parse error: Expected 'EOF', got '&' at position 2: m&̲&n m 和 m和 mn都为真时||或or(逻辑或) m ∥ ∥ m\|\| mn m 或 m或 mn有一个为真,或者两个都为真xor(逻辑异或)$m xor $n$m$n一真一假时!(逻辑非)!$m$m为假时

在逻辑运算符中,逻辑与和逻辑或这两个运算符有4种运算符号,其中属于同一种逻辑结构的两个运算符号(例&&和and)之间却有着不同的优先级

5.比较运算符

比较运算符就是对变量或表达式的结果进行大小、真假等比较,如果比较结果为真,则返回true,反之,则返回false

运算符作用<小于>大于<=小于等于>=大于等于==相等!=不等===恒等!==非恒等

a = = = a=== a===b: a 和 a和 ab不只是数值上相等,而且两者的类型也得一样。

a = = a== a==b: a 和 a和 ab的数值相等即可,类型不用一样

a ! = = a!== a!==b: a 和 a和 ab的或许数值不相等,或许类型不相等

6.错误控制运算符

@错误屏蔽运算符可以对程序中出现的错误的表达式进行操作,进而对错误信息进行屏蔽,其使用的方法就是在错误的表达式前加上@即可,虽然错误依旧存在,但是在输出时并不会显示报错。

7.三元运算符

三元运算符(?:),也称为三目运算符,用于根据一个表达式在另两个表达式中选择一个,而不是用来在两个语句或者程序中选择

例:

echo $a=true ? "true" : "false";

运算符的优先级顺序和结合规则

所谓运算符的优先级是指在应用中哪个运算符先计算哪个,后计算哪个。

PHP的运算符在运算中遵循的规则是:优先级高的运算先执行,优先级低的操作后执行,同一优先级的操作按照从左到右的顺序进行。也可以像四则运算那样使用小括号,括号内的运算最先执行。

函数

概念:

将一些重复使用到的功能写在一个独立的代码块中,在需要时单独调用

格式:

function fun_name(参数1,参数2……){ fun_body }

调用:

当函数定义好后,只需要引用函数名并赋予正确的参数即可完成函数的调用,在函数调用时,需要向函数传递参数,被传入的参数称为实参,而函数定义时的参数为形参。参数传递的方式有按值传递,按引用传递和默认参数3种。

(1).将实参的值复制到对应的形参中,在函数内部的操作针对形参进行,操作的结果不会影响到实参。即函数返回后,实参的值不会改变。

(2).按引用传递就是将实参的内存地址传递到形参中。这时函数内部的所有操作都会影响到实参的值,返回后,实参的值会发生变化。引用传递方式就是传值时在原基础上加上&即可。

(3).默认参数(可选参数)可以指定某个参数为可选参数,将可选参数放在参数列表末尾,并且指定默认为空。

从函数中返回值return()

return()将函数的值返回给函数的调用者,即将程序控制权返回到调用者的作用域。如果在全局作用域内使用return()关键字,那么将终止脚本的执行。

return语句只能返回一个参数,即只能返回一个值,不能一次返回多个。如果要返回多个结果,就要在函数中定义一个数组,将返回值存储在数组中返回。

变量函数

函数的调用是通过改变变量名来实现的,通过变量名后面加上一对小括号,PHP将自动寻找与变量名相同的函数,并且执行它。如果找不到对应的函数,系统将会报错。这个技术可以用于实现回调函数和函数表等。

对函数的引用

引用不仅可用于普通变量、函数参数,也可以作为函数本身。对函数的引用,就是对函数返回结果的引用。

当不再需要引用时,可以取消引用。取消引用使用unset()函数,它只是断开了变量名和变量内容之间的绑定,而不是销毁变量内容。

函数的优点

1.提高程序的维护性

2.提高软件的可靠性

3.提高程序的可重用性

4.提高程序的开发效率

条件控制语句

if语句

if(expr){ satatement1; satatement2; …… }

它按照条件选择执行不同的代码片段,如果表达式expr的值为真,那么就顺序执行statement语句;否则就会跳过该条语句,再往下执行。

在满足某个条件时执行一条语句,在不满足时执行其他语句,这时候就可以使用else语句

if(expr){ satatement1; satatement2; …… }else{ satatement1; satatement2; …… }

if…else语句只能选择两种结果,要么执行真,要么执行假,但是有时会出现两种以上的选择,这时可以使用else if语句来执行

if(expr){ satatement1; satatement2; …… }else if{ satatement1; satatement2; …… } …… else{ satatement1; satatement2; …… }

例:

$b=71; if($b>=90){ echo "优秀"; }else if($b>=60 && $b<90){ echo "良好"; }else{ echo "不及格"; }

switch语句

switch(variable){ case value1:satatement1; break; case value2:satatement2; break; case value3:satatement3; break; …… default: default satatement; }

虽然elseif语句可以进行多重选择,但使用十分繁琐。为了避免if语句过于冗长,提高程序的可读性,可以使用switch分支控制语句。

switch语句根据variable的值,依次与case的value值比较,如果不相等,继续查找下一个case;如果相等,就执行对应的语句,直到switch语句结束或遇到break为止。switch语句最终可以设置一个默认值default,如果前面的case中没有找到相符的条件,则输出默认语句。

例:

$b=65 switch((integer)($b/10)){ case 10: echo "A"; break; case 9: echo "A"; break; case 8: echo "B"; break; case 7: echo "C"; break; case 6: echo "D"; break; default: echo "不及格"; break; }

循环控制语句

while循环语句

while(expr){ satatement; }

while循环语句是PHP中最简单的语句,当表达式expr的值为真时,执行satatement语句,执行结束后,再返回expr表达式继续进行判断。直到表达式的值为假,才跳出循环,执行下面的语句。

例:

$j=1; while($j<=5){ echo $j." "; $j++; }

do…while循环语句

do{ satatement; }while(expr)

do…while和while的区别在于,do…while要比while语句多循环一次。当while表达式的值为假时,while循环直接跳出当前循环;而do…while语句则是先执行一遍程序块,然后对表达式进行判断。

例:

$j=1; do{ echo $j." "; $j++; }while($j<=5)

for循环

for(expr1;expr2;expr3){ satatement; }

for循环是PHP中最复杂的循环结构,expr1在第一次循环时无条件取一次值;expr2在每次循环开始前求值,如果值为真,则执行satatement,否则跳出循环,继续往下执行;expr3在每次循环后被执行。

例:

$str="10以内的奇数:"; $str2="10以内的偶数:"; for($i=1;$i<=10;$i++){ if($i%2==0){ $str2.=$i." "; }else{ $str.=$i." "; } } echo $str."<br>".$str2;

foreach循环语句

foreach循环是PHP4引进来的,只能用于数组。在PHP5中又增加了对对象的支持。

foreach($arr as $key=>$value){ satatement; }

流程控制的另一种写法

PHP提供了另一种书写格式,包括if、while、for、foreach和switch都可以使用

使用:来代替左边的{,使用endif;、endwhile;、endfor;、endforeach;和endswitch;来代替右边的}

break/continue

在使用循环语句时,有时不确定循环次数,遇到这样的情况可以使用无限循环,只有当程序块满足一定条件后才跳出循环,跳出循环使用的关键字是break和continue

1.break:break关键字可以终止当前的循环,包括while、do…while、for、foreach和switch在内的所有控制语句,break语句不仅能跳出当前的循环,还可以指定跳出的几重循环。例:break $num;

2.continue:continue能终止本次循环,进入下一次循环中。

最新回复(0)