发表于 2022-7-6 21:06:35

【php学习记录贴】第二节 PHP基础

本帖最后由 雯 于 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.
```

在内存中通常有以下几个分区:
栈区:程序可以操作的内存部分(不存储数据,运行程序代码),空间小但是运行速度快。
代码段:存储程序的内存部分(不执行)
数据段:存储普通数据(全局区和静态区)
堆区:存储复杂数据(空间大,效率低)
页: [1]
查看完整版本: 【php学习记录贴】第二节 PHP基础