本帖最后由 雯 于 2022-7-6 21:05 编辑
1. PHP语法初步
PHP是一种运行在服务器端的脚本语言,可以嵌入到HTML中。
1.1 PHP代码标记
在PHP历史发展中,可以使用多种标记来区分PHP脚本:
ASP标记:<% php代码 %>
短标记:<? php代码 ?>
以上两种基本不怎么使用,如果要使用,需要在配置文件中开启。开启方法:在php安装目录找到php.ini文件,在第211行左右有个‘short_open_tag=off’,第215行有个'asp_tags=off',并且文件里也告诉我们使用方法了。
脚本标记:<script language="php">php代码</script>
目前最常用的一种标记方法叫“标准标记”:<?php php代码?>
1.2 PHP注释
注释是一个好习惯,特别是对于初学者来说,注释代表的是你的代码思路。
注释分为两种注释:行注释、块注释
行注释:一次注释一行
//:后面跟的所有内容都是注释
#:与//一样
块注释:一次性注释多行
/*
“/*”与“*/”中间的所有内容均为注释
*/
1.3 PHP语句分隔符
语句分隔符:在PHP中,代码是以行为单位,系统需要通过判断行的结束,该结束通常都是一种符号,“;”(英文状态下的分号)
<?php
echo 'hello world'
echo 'hello world';
?>
运行此代码会出现以下报错:
Parse error: syntax error, unexpected 'echo' (T_ECHO), expecting ',' or ';' in ***.php on line 3
其中,Parse error表示“解析错误”,syntax error表示“语法错误”,on line表示该错误在代码第几行。
上面的代码缺少语句分隔符“;”所以才会出现报错,将第二行echo 'hello world'后加上英文分号即可。
特殊说明:
1、PHP中标记结束符?>有自带语句结束符的效果,最后一行PHP代码可以没有语句结束符“;”【不建议大家使用】
2、PHP中其实很多代码的书写并不是嵌入到HTML中,而是单独存在,因此在平常书写代码的习惯中就不建议使用标记结束符?>,PHP会自动从开始到最后全部认为是PHP代码,从而解析。
2. 变量
PHP是一种动态网站开发的脚本语言,因此动态语言特点是交互性,会有数据的传递,而PHP作为中间人,需要进行数据的传递,传递的前提就是PHP能够临时存储这些数据。
2.1 变量的概念
变量来源于数学,是计算机语言中能储存计算结果或能表示值的抽象概念。变量可以通过变量名来进行访问。在指令试语言中,变量通常是可变的。
简单来说就是:
1、变量是用来存储数据的 ;
2、变量是有名字的;
3、变量是通过名字来访问数据的;
4、变量是可以改变的:数据
2.2 变量的使用
PHP中的所有变量都必须使用“$”符号。
1、定义:在系统中增加对应的变量名字(内存)
2、赋值:可以将数据赋值给变量名(可以在定义的同时完成)
3、可以通过变量名访问储存的数据
4、可以将变量从内存中删除
<?php
//变量
//定义变量:在PHP中不许哟啊任何关键字定义变量(赋值)
$var1; //定义变量
$var2 = 1;//定义变量同时赋值
//访问变量
echo $var2; //通过var2变量名字找到存储的内容1,然后输出。
//修改变量
$var2 = 2; //在代码运行至此行时修改var2变量的值为2。
echo '<hr/>',$var2; //再次输出var2的值,其中“'<hr/>'”的意思是换行。
//删除变量:使用unset(变量名字)
unset($var2);
//如果此时我继续输出变量
echo $var2;
//就会出现以下报错
Notice: Undefined variable: var2 in ***.php on line *
//Notice的意思是“通知”,Undefined variable的意思是“未定义的变量”
2.3 变量命名规则
1、在PHP中变量名字必须以“$”符号开始;
2、名字由字母、数字和下划线“_”构成,但是不能以数字开头;
3、在PHP中本身还允许中文变量(不建议);
2.4 预定义变量
预定义变量:提前定义的变量,系统定义的变量,存储许多需要用到的数据(预定义变量都是数组)
$_GET:获取所有表单以get方式提交的数据
$_POST:post提交的数据都会保存在此
$_REQUEST:get和post提交的数据都会保存在此
$_SERVER:服务器信息
$GLOBALS:PHP中所有的全局变量
$_SESSION:session会话数据
$_COOKIE:cookie会话数据
$_ENV:环境信息
$_FILES:用户上传的文件信息
其中$_GET、$_POST、$_REQUEST、$_SERVER、$_SESSION、$_COOKIE都是比较常用的变量。
2.5 可变变量
可变变量:如果一个变量保存的值刚好是另外一个变量的名字,那么可以直接通过访问一个变量得到另外一个变量的值:在变量前面再多加一个“$”符号。
如:
$a = 'b';
$b = 'bb';
那么此时输出“a”得到的值为“b”,
如果:
$$a = 'b';
$b = 'bb';
那么此时输出“a”得到的值为“bb”。
其实理解以下也很简单,就是$a输出的值为b,所以$$a此时会被解析为$'$a'->$'b'->$b->bb。
2.6 变量传值
将一个变量赋值给另外一个变量:变量传值
变量传值一共有两种方式:值传递、引用传递
值传递:将变量保存的值复制一份,然后将新的值(复制出来的)给另外一个变量保存(此时两个变量之间没有关系)。
$a = 1;
$b = $a; //引用传递,此时a和b变量的值都为1
//下面如果我将b变量赋予新值
$b = 2;
//那么此时再输出a、b
echo $a,$b; //此时返回的值为1,2
//因为b之前是复制a的值,因此再赋新值2给b时,a的值不受影响。
引用传递:将变量保存的值所在的内存地址,传递给另外一个变量:两个变量指向同一块内存空间(两个变量是同一个值)。
$a = 1;
$b = &$a; //引用传递,此时a和b变量的值都为1
//下面如果我将b变量赋予新值
$b = 2;
//那么此时再输出a、b
echo $a,$b; //此时返回的值为2,2
//因为b被赋予了a的储存路径,并且将a储存的值更改为了2,所以输出a的时候返回的值也是2.
在内存中通常有以下几个分区:
栈区:程序可以操作的内存部分(不存储数据,运行程序代码),空间小但是运行速度快。
代码段:存储程序的内存部分(不执行)
数据段:存储普通数据(全局区和静态区)
堆区:存储复杂数据(空间大,效率低)