一、搭建服务器
1、搭建基础的web服务器Apache
我们直接下载xampp ,避免很多操作 xampp 下载网址:官网链接???????????????????百度云盘
- 安装完成之后我们打开Apache服务器,在命令行用命令:apache start或者直接用xampp的可视化工具打开即可
- 然后我们进入浏览器输入Apache就会有一个页面,下图是单独安装的Apache 而我们使用的是xampp所以可能有所出入,有页面之后就是安装成功了
2、安装PHP
上面的xampp 下载之后就是有php7(百度网盘) 的,然后我们使用php 运行一下测试文件 启用win+R 输入cmd ,在输入一下命令
php -f C:\xampp\htdocs\index.php
后面的 C:\xampp\htdocs\index.php 是文件路径
如果成功打印就是PHP安装成功
3、Apache加载PHP
- 我们找到
Apach 的安装目录并进入conf 文件夹打开httpd.conf 文件,如图 - 我们打开
http.conf 文件之后找到LoadModule - 这里
C:/xampp/php/php7apache2_4.dll 是我的Php适配Apache的dll文件,如下图: - 然后我们在进入浏览器输入localhost/index.php能看见哦我们上面的php文件,如图:
4、安装MySQL
64位MySQl下载 单体MySQL安装教程 当然我们xampp也提供了一个mysql,这个是可以直接使用的,但是任然需要初始化一下,可以去上面的MySQL安装教程里,跳过安装,看怎么配置
5、创建虚拟主机
这里因为我的学习并不需要,所以不录入博客
二、PHP基础知识
1、标记规则
1.1、标准规则
<?php
?>
1.2、不完整规则
<?php
1.3、历史规则
- PHP在早起经历了多种标记,现在已经几乎都不用了,但是如果朋友,要认识
<?
?>
****************************************
<%
%>
****************************************
<scrpit lagnguage="php">
</script>
2、注释
2.1、单行
使用 // 来进行单行注释
2.2、多行注释
使用 /* */ 来进行多行注释
3、基础语法
3.1、变量
- 变量必须使用
$ 符号来声明 - 变量名字由字母、数字和下划线组成
- 变量严格区分大小写
- 其中数字不能做开头(不能直接跟在
$ 符号后) - 变量命名应尽量与事实需求响应(识别度高),如名字对应
$ name,年龄对应$ age - 比较复杂的组合变量名可以使用下划线(用下划线链接单词,推荐)胡总和驼峰法(单词首字母大写):下划线法
$ family_name;驼峰法:$ familyName
$name = 'Sherry';
$familyName= "Gin";
$family_name= "Lan";
3.2、预定义变量(系统变量)
- $_GET:用户通过get方式提交数据
- $_POST:用户通过post方式提交数据
- $_REQUEST:用户通过get和post提交的数据
- $_SERVER:用户和服务器的基本信息数据
- $_FILES:用户提交的文件数据
- $_SESSION:session数据
- $_COOKIE:sookie数据
- $GLOBALS:所有全局变量,也是唯一一个不是以下划线开始的预定义变量
- $_ENV:环境数据
注意打印以上变量需使用 var_dump() 来打印, echo只能打印简单的变量
3.3、变量传值
- 传递值:将变量的值赋给另一个变量
- 引用传递:将变量所指向的数据的内存地址赋值给另一个变量,两个变量指向同一个值,任何一个的修改都会影响到另一个变量
$a = 100;
$b = $a;
$c = &$a;
echo $a,$b,$c;
$b = 'b';
echo $a,$b,$c;
$c = 'c';
echo $a,$b,$c;
3.4、常量
- 常量名通常用大写字母表示
- 常量名不需要
$ 符号开始 - 常量名由字母、数字、下划线组成,其中不能以数字开头
- 复杂的常量名使用下划线表示法:FAMILY_NAME
- 常量的命名比变量其实要宽松(
不建议使用 )
define("PI", 3.1415926);
define("SELF_PI", 3);
const FAMILY_NAME = "Green";
define("-_-", "smile");
3.5、系统常量
- PHP_VERSION:PHP版本号
- PHP_INT_SIZE:PHP中得int数据所占用得内存字节数
- PHP_INT_MAX:PHP中int数据所能表示得最大值
上面三个是不能改变的,下面得Markdown不好打出来
4、数据类型
基本数据类型
-
整形(
Int/Integer):存储整数数据
-
浮点型(
Float):存储小数数据和超过整形范围的数据类型
-
布尔型(
Bool/Boolean)存储布尔类型数据,只有
true和
false两个值
-
字符串型(
String)存储字符串数据(最常见)
-
复合数据类型
-
数组型(Array):存储数组数据(即多个数据存放到一个变量中)
-
-
-
- 使用变量和
[ ] 来初始化数组,但是这个时候需要给定一个值,而且一次只能添加一个元素
-
对象型(Object):存放对象数据,由类实例化得到(面向对象)
特殊数据类型
-
资源型(Resource):存放外部资源数据(数据库资源\文件资源)
-
空型(null):变量没有存储任何数据
4.1、数组
- 索引数组
- 关联数组
- $arr2 = array(‘name’ => “张三”, ‘age’ => 30, ‘gender’ => “男”);
- 混合数组
- $arr3 = array(1,2,“name” => ‘张三’, ‘age’ => 30);
4.2、二维数组
<?php
$user1 = array('name' => "张三", 'age' => 30);
$user2 = array('name' => "李四", 'age' => 23);
$user3 = array('name' => "王五", 'age' => 40);
$users = array($user1, $user2, $user3);
echo $users[0]["name"]
4.3、数据类型转换
- 自动转换
- php根据运算场景来进行数据类型的转换
- 第一个字符是字母或者其他特殊符号,结果为0
- 第一个字符是数字,可以依次往后保留,直到不是数字为止
- 如果在数字往后推的情况下,碰到第二个小数点结束(保留一个小数点)
- 强制转换
- 我们使用 (
数据类型 )数据来把数据强行转为括号内的数据类型
5、运算符
5.1、 赋值运算符
- 给变量或者常量 进行赋值运算:把右边的结果保存到左边
- = :最常见的赋值运算
- +=: 左边与右边的运算结果(整体)相加,然后再把整个运算结果赋值给左边
- -=,=,/=:与 += 一致
- 注意:在使用“/=”进行运算的时候,右侧的结果不能为0,否则会报错
$num1 = 10;
$num1 += 10;
$num1 = $num1 + 10;
$num2 = 10;
$num2 *= 1 + 1;
$num2 = $num2 * (1 + 1)
$num2 /= 0;
$num2 = $num2 / 0
5.2、算数运算符
- 普通算术运算符,需要符号左右两边都是数值
- +、-、*、/ 加减乘除
- %:取模运算,也就是取余数
5.3、错误抑制符号
- 单目运算,将可能出现的比较低级的错误给抑制,不报错误
- @:在可能出现错的表达式之前使用
<?php
$a = 10 / 0;
@$a = 10 /0;
5.4、比较运算符
- 用于两个表达式的比较,比较结果通常使用
true 或false - >,< 大于和小于
- >=,<= 大于等于和小于等于
- == 左边等于右边返回true
- === 左边等于右边且数据类型一致返回true
5.5、逻辑运算符
- 用于针对运算结果进行运算
- &&: 逻辑 与 运算(也作 and),需要同时满足,否则false
- ||: 逻辑 或 运算(也作or),有一个false就false
- !:逻辑 非 运算,让结果取反
- 逻辑运算符(逻辑与和逻辑或)也称之为短路运算:即左边表达式如果能够确定结果,那么右边表达式就不再判定
5.6、连接、三元、自操作运算符
<?php
$a = 10;
$b = 10;
echo $a++;
echo ++$b;
6、流程控制
- 在php中,流程控制分为三种:顺序结构、分支结构和循环结构
- 顺序结构:最普遍的一种结构,不需要人为控制,就是代码按照编写的顺序从上往下逐行执行
- 分支结构:需要认为控制,将可能发生的结果对应的代码块,按照指定的条件去判断执行,通常情况下是根据条件选择一个对应的代码块执行
- 循环结构:是代码高校解决重复问题的一种方式,通常是设定变化条件,然后让代码块在指定范围内重复执行
6.1、顺序结构
<?php
$a = 100;
echo $a;
6.2、分支结构
6.2.1、IF分支结构
- IF分支语法:if分支根据业务的复杂性可以分为三种,即简单if分支、标准if分支和复杂if分支
- 简单if分支:简单的if分支是只有一个代码块,达到某个指定的条件才会执行,否则不执行对应的代码块。语法规则为
<?php
if (条件){
}
- 标准if分支:一个满足一个不满足的情况
if (条件){
}else{
}
- 在PHP中elseif和else if同时支持,效果等同
<?php
$choice = "微信";
if ($choice == "支付宝"){
echo "支付宝支付";
}elseif ($choice == '微信支付') {
echo "微信支付";
}else {
echo "其他支付";
}
- 在使用if来判断的时候也可以嵌套多个if
- IF分支注意事项:如果条件变换是循序渐进的,那么在条件编写的时候,一定要注意条件变换的顺序性,以及发生条件区间封闭性。如按照年龄来划分人所处某一类人的时候,一定是最狭窄的体哦阿健先判断(满足的概率偏小),最后是最宽的条件。
6.2.2、Switch分支结构
- 基本语法
switch (条件变量){
case 匹配值1:
break;
case 匹配值2:
break;
default:
break;
}
6.3、循环结构
6.3.1、for循环
for (初始化条件; 条件判断; 条件变更){
};
例如:
<?php
$sum = 0;
for ($a=1; $a<=100; $a++){
$sum += $a ** 3;
};
echo "1-100的立方和是:".$sum;
- 结果图
6.3.2、While循环
while (循环条件)
{
};
$i = 1;
while ($i <= 100){
echo $i;
$i++
}
<?php
do{
}while(条件);
$i = 1;
$res = 0;
do{
$res=0;
$i = 0;
}while($i <= 100);
6.3.3、foreach循环
<?php
$arr = array("name" => "张三", "age" => "30", "gender" => "男");
foreach($arr as $k => $v){
echo $k.':'.$v."<br>";
}
echo $k . ':'. $v . '<br>';
以上所有循环都可以用continue;/break;来继续/跳出循环也可以指定控制的循环层数,默认为1(即本层)
7、PHP函数
7.1、函数基础语法
<?php
function 函数名(形参列表){
return 返回值;
}
function showNumber (){
$sum = 0;
for ($a=1; $a<=100; $a++){
$sum += $a ** 3;
};
return $sum;
}
echo '1-100的立方和为' . showNumber();
- 注意! 调用函数一定要先定义函数,再在函数下面调用,虽然php也可以先调用但是并不建议
- 如果函数里定义了形参,那么调用函数的时候就必须传入参数不然就会报错,当然在定义函数的时候也可以定义默认值比如
function($num = 1){} 这样$num 的默认值就是1 - 例如
7.2、参数传递
<?php
function changeValue($a, &$b){
echo '<br/>';
echo $a++,"<br/>";
echo $b++,"<br/>";
}
$a = 10;
$b = 10;
echo $a,$b;
changeValue($a,$b);
echo $a,$b;
changeValue(100, $b);
7.3、函数体
- 函数体中可以定义变量保存数据
- 函数体中可以使用分支结构进行逻辑判断
- 函数体中可以使用循环实现数据迭代
- 函数体中可以调用函数(与外部调用方式一样)
- 函数体可以定义函数(匿名函数)
- 函数体中可以调用类(高级)
7.4、函数返回值
- 函数一定有返回值:如果用户指定就会返回指定结果,否则返回NULL
<?php
function display(){
echo "hello world";
}
var_dump(display());
function getBack(){
return 100;
}
var_dump(getBack());
$num = getBack();
echo $num;
7.5、静态变量
- 定义:静态变量,即在函数内部使用
static 关键字修饰的变量,这种变量是在函数第一次调用时执行,而且只执行一次,在函数再次调用时,会自动跳过这一行(不会再次执行)。这种变量能够在同一个函数多次调用共享数据的变化。
- 基础语法:使用
static 关键字修饰变量,通常静态变量都会在定义的时候进行初始化(即给定值)
<?php
function getStatic(){
static $c = 0;
$var = 0;
}
- 静态变量与函数内定义的普通变量的区别在于,初始化那行只会执行一次
<?php
function getStatic(){
static $c = 0;
$var = 0;
echo $c++, $var++
}
getStatic();
getStatic();
- 静态变量的作用范围:虽然静态变量允许跨函数共享数据,但是静态变量只允许在当前函数内部使用,其他任何地方都用不了
7.6、作用域
<?php
$a = 100;
$_GET['age'] = 1;
function display(){
$b = 50;
echo $_GET['age'];
}
echo $_GET['age'];
- 可以使用
global 关键字在函数内部进行引入,global 关键字是一个全局引用/定义变量,如果是引入全局变量,必须使用global 定义一个外部同名变量(global 只能声明变量,不能赋值)
7.7、还有系统函数和可变函数,暂时不看
8、文件包含
8.1、文件包含基础语法
<?php
include 'index.php';
include 'function.php';
echo '1-100的立方和为' . showNumber();
例如:
注意!在引入外部文件时候要先引入在使用外部文件里面的内容,否则就会报错
例如
<?php
showNum();
include "function.php";
- 文件路径
- **./**表示同级目录(当前文件所属文件夹),每个文件夹下都有 " ." 文件,代表当前目录
- **…/**表示上级目录(当前文件所属文件夹的上级文件夹)
- 什么都不写就代表是当前目录
|