PHP学习笔记

PHP教程 2025-09-10

最开始的开始

首先,这是我的学习笔记,因为我有一门编程语言的基础(C语言),所以写起来会有很大一部分都跳过了,并且我的PHP的学习是为了网安的web部分,所以可能并不适合所有人学习


1. 安装

首先是安装,需要安装phpstore和phpstudy,当然直接vscode写也行,我看的课程里是用的phpstore+phpstudy的环境搭建的,这样搭建也比较简单,而且phpstudy内还可以直接下mysql,可以省下弄mysql的时间

安装phpstudy之后,我们需要找到phpstudy中php安装的位置

我的phpstudy版本是8.1.1.3,其文件位置在安装位置phpstudy_proExtensionsphp

也可以在面板中寻找,如图


当我们找到之后就可以开始使用了,至于如何使用我们一步一步来

首先我们要写一段代码来展示我们真的开始学习了php ?

以上代码是php版本的hello world

在这里我们要注意,相当于C语言/C++中的头文件即可,当然也可以想象说是花括号 ?

此时,我们可以通过此处打开

但是我们打开后会发现浏览器显示502,这说明我们没有配置,那么我们事先准备好的php位置就有用了

我们依次点击phpstore里的File -> Settings -> PHP -> CLI Interpreter -> PHP executable

选择phpstudy中php所在目录中的php.exe

然后运行成功

当然,如果您喜欢探索,此时应该发现了

php注释与C相同

2. 变量的定义和使用

先提一嘴,在php里变量是不遵循强制类型检查的,也就是说你不必繁琐的去解释每个变量的数据类型,而是可以更多的专注变量内容,当然,这也意味着你的php程序更容易因为变量类型的问题出现更多的错误

变量的定义使用$开始定义变量(就是在英文状态下按下键盘上shift+数字4)

但是疑似php中需要拥有一个初值,也可能是我没有找到不赋初值的办法

在这个例子内我们也可以看出php中变量的使用也需要携带$符号

接下来登场的是全局变量

php拥有全局变量的概念,内部访问全局变量需要使用global关键字

最后输出2,同时我们可以看到函数的定义也不需要指定强类型,而且调用也与C类似

那么为什么最后输出2呢

因为ceshi不通过但是php并不会因为一个错误而停止执行,他会继续执行,执行到ceshi2时输出被x++改变的x的值

静态变量使用与C一致,static,同时可以得到PHP中使用function定义函数,传参好像也需要携带$以证明其为变量

在php中换行等符号也可以使用与C相同(echo "n")或者不同的(PHP_EOF或者
)

3.函数的定义与使用

可以看到我非常喜欢把下一章的东西放之前来讲hhhh

在这里,function xxx(yyy)相当于一个函数原型,这个xxx是作为函数名,yyy作为,其中yyy如果是变量依然遵循使用$标注

同时这个函数依然有返回值

返回使用return,与C一致

4.运算

Ps:在php中大部分运算和C差不多,相同的运算在这里不赘述

首先是关于字符串,因为php不像C一样可以使用%xxx来控制输出,也不像C++一样在cout中添加<<来控制

所以这里先讲字符串

在php中变量可以和字符串连接在一起,他们的连接不像C使用strcat,也不像C++/Python使用+

而是使用.

对的,就是一个点,就很难绷,以下为案例

";echo $TXT1.",".$TXT2;?>

Ps:放结果挺占位置的,如果有需求打一下自己看一下吧

代码内容具体点的内容(其实就是凑字数)用法
.并置连接字符串xx.xx
strlen()长度求长度strlen(xx);
strpos()位置求A中字符串B的位置如果找到输出B的首个出现的位置[下标]strpos(A,B);

其他的话大部分和C一样,php7多一个intdiv向下取整,比较上有一些小变化  

x===y是绝对等于,指值和类型相同,区别于==仅值相同,原因呢自然就是因为php在定义变量时是弱类型的

x!==y区别x!=y是值或类型不等都可(x!=y还可以使用x<>y)

逻辑运算符大致相同但是可以使用同等单词替代,and->&&  or->||  xor->^

条件语句和三元与C大致一致,需要主要else if在php表现为elseif(无空格版本?离谱)
循环与C一致

5.条件与循环

条件语句没变化,也就多了elseif这个无空格的else if ?

然后多了一个循环,类似于C++11的循环范围

用来遍历关联数组foreach

写法

foreach ($a as $key => $value){    echo "key=" . $key . "," . "value=" . $value;}

当然看不懂没关系,马上就讲这个

6.数组和排序

首先是普通数组的定义,使用array定义,在php中数组是没有类型区别的

" ;}//制作函数打印关联数组function pri2(&$num){    foreach ($num as $key => $value) {        echo $key . " " . $value;    }    echo "
" ;}$arr = array(1, 2, 3);//正常的定义$brr = array("one",2,3.001);//可以用各种数据类型$crr = array("one" => "1", "two" => "2", "three" => "3");//定义关联数组pri($arr);pri($brr);pri2($crr);

所以

普通数组的定义是

变量名 = array(元素,元素.....);

关联数组(键值对)的定义是

变量名 = array(键 => 值,....);

那么肯定令人疑惑的是——值怎么添加呢?

答案是

pri($arr);$arr[3] = 9;pri($arr);

好熟悉啊,是吧vector(

接下来是排序

数组排序有好几个函数

  • sort() -升序排序

  • rsort() -降序排序

  • asort() -根据关联数组值升序排序

  • arsort() -根据关联数组值降序排序

  • ksort() -根据关联数组键升序排序

  • krsort() -根据关联数组键降序排序

7.面向对象

面向对象因为C没有涉及到,所以这里简单讲一下,但是C++提到了哈

面向对象里面有类和对象

:就是相同属性和方法的一个集合

比如来说,食物就是一个类

饼干就是食物类的一个对象

具体到代码是这样的

name = $name;    }    function set_number($number){        $this->number = $number;    }    function get_number(){        return $this->number;    }}$cook = new food();$bread = new food();$cook ->set_name("cook");$cook ->set_number(5);$bread ->set_name("bread");$bread ->set_number(2);?>

这里,我们创建了一个类(class)food

这个类里面有三个方法,set_name可以为对象指定对应的属性name

set_number为对象指定对应的属性number

get_number可以返回出对象的number属性

然后创建了俩对象,通过set_name set_number来指定属性

接着可以

echo $cook -> name."
";echo $cook -> get_number();

来获得饼干的名称和数量