0


PHP基础

PHP初识

为什么学php?

 通过live serve 起的假的服务不能做逻辑处理   所以为了熟悉前后端交互 业务流程   学习php

什么是php?

 PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言。
 PHP(全称:PHP:Hypertext Preprocessor,即"PHP:超文本预处理器")是一种通用开源脚本语言。
 PHP 脚本在服务器上执行

PHP 文件是什么?

PHP 文件可包含文本、HTML、JavaScript代码和 PHP 代码
PHP 代码在服务器上执行,结果以纯 HTML 形式返回给浏览器
PHP 文件的默认文件扩展名是 ".php"

PHP 能做什么?

PHP 可以生成动态页面内容
PHP 可以创建、打开、读取、写入、关闭服务器上的文件
PHP 可以收集表单数据
PHP 可以发送和接收 cookies
PHP 可以添加、删除、修改您的数据库中的数据
PHP 可以限制用户访问您的网站上的一些页面
PHP 可以加密数据

安装 phpstudy 包含两个内容

对于初学者建议使用集成的服务器组件,它已经包含了 PHP、Apache、Mysql 等服务,免去了开发人员将时间花费在繁琐的配置环境过程;

服务器 Apache 会在本地起一个本地服务 http://localhost/ (以后启动phpstudy 必须通过http://localhost/ 来访问 绝对不能通过live serve)

学习phpstudy 的注意事项

1. 每天打开电脑 第一件事  启动  phpstudy
2. 以后启动运行phpstudy   必须通过http://localhost/   来访问  绝对不能通过live serve
3. http://localhost/  起的服务的根目录  在  WWW (点击小图标  鼠标右键 网站根目录)
4. 以后我们写的所有php文件  必须放在 WWW 中

PHP编码格式

// 设置页面编码格式的函数header('content-type:text/html;charset=utf-8');

PHP基础语法

怎增使用php

动态内容,写在php标签里面,静态的样式写在其他地方

PHP 脚本可以放在文档中的任何位置。
PHP 脚本以 <?php 开始,以 ?> 结束:

<?php// PHP 代码?>

注意:

  • php的语法比较严格 语句结束之后 一定要加";" 否则会报错;
  • php 语法出错 会直接将错误输出到页面中(显示错误的 行号)
  • PHP 代码在服务器上执行,结果以纯 HTML 形式返回给浏览器

php的输出语法

  1. echo 可以输出一个或多个字符串(多个字符串之间用逗号分隔);
  2. print 只允许输出一个字符串;
  3. print_r() 打印数组和对象,一般用来查看数据格式,并不能直接输出
<?phpecho"hello","world","Today","is","Thursday","<br>";print"你好php";print_r([1,2,3,4])?>

php的注释

  1. 单行注释 (//)
  2. 多行注释 (/**/)

示例:

<?php 
    // 这是单行注释
    /*
        这是php多行注释
    */
?>

php变量

PHP 变量规则:
PHP 变量规则:
变量以 $ 符号开始,后面跟着变量的名称
变量名必须以字母或者下划线字符开始
变量名只能包含字母数字字符以及下划线(A-z、0-9 和 _ )
变量名不能包含空格
变量名是区分大小写的($y 和 $Y 是两个不同的变量)
创建(声明)PHP 变量:

PHP 没有声明变量的命令,变量在您第一次赋值给它的时候被创建:

<?php
    $a =100;
    $str = "hello world";
    $bool = true;

?>

注:PHP 也是一门弱类型语言(会根据变量的值,自动把变量转换为正确的数据类型)

PHP 变量作用域
  • global (全局作用域);
  • local (局部作用域);
  • parameter (参数作用域);
  1. 在函数中声明的变量是局部变量,在函数外声明的变量是全局变量(全局变量和局部变量不会相互影响);
<?php 
        // 全局变量$x=5;$y=6;$z=$x+$y;echo$z;echo"<br>";// 在函数内声明的变量是局部变量functionfn(){$x=10;$y=20;return$x+$y;}$result=fn();echo$result;?>

那么,如何将函数内的局部变量改为全局变量;

  • 通过global 关键词 允许局部变量 访问全局变量
  • 借助超级全局变量 $GLOBALS (类似js中的window) 访问全局变量

a. 通过global 关键词 允许局部变量 访问全局变量

<?php$x=5;functionfn(){global$x;//   通过global 关键词 可以允许$x 访问全局的$x$x=10;}fn();echo$x;?>

b.借助超级全局变量 $GLOBALS (类似js中的window) 访问全局变量
注:PHP 将所有全局变量存储在一个名为 $GLOBALS[index] 的数组中。 index 保存变量的名称。这个数组可以在函数内部访问,也可以直接用来更新全局变量

<?php$x=5;functionfn(){$GLOBALS["x"]=10;// 类似js中的window["a"]}fn();echo$x;?>
  1. 参数作用域(形式参数也是局部变量)
<?php$a=10;$b=20;functionfn($a,$b){$a=100;$b=200;echo$a."|".$b."<br>";}fn(100,200);echo$a."|".$b;?>

php常量

常量是全局的
常量在定义后,默认是全局变量,可以在整个运行的脚本的任何地方使用。
定义方法:
1. 定义常量const
2. define(name,value,case_insensitive)   
 name  常量名
value  常量值
case_insensitive   大小写是否不敏感   true=>不敏感(不区分大小写) false =>区分大小写    高版本已经废除
<?php
        consta=100;echo a;define("a",100,false);echo a."<br>";echoA;?>

PHP数据类型

  • php基本数据类型 String(字符串), Integer(整型), Float(浮点型), Boolean(布尔型), Array(数组), Object(对象), NULL(空值);
  • 注:PHP var_dump() 函数返回变量的数据类型和值,一般用来查看数据类型

php数据类型没有underfined,js才有

除此之外还有 is_string(),is_int(),is_float(),is_bool(),is_null(),is_array()

  • is_string()返回true或者fasle
  • bool值 - 若是true,返回1- 若是false,页面返回空,没有任何输出

直接输出true,会转化为1

<?php// 字符串$str="hello哈哈";var_dump($str);echois_string($str);// 整型$int=100;var_dump($int);echois_int($int);// 浮点型$float=100.50;var_dump($float);echois_float($float);// 布尔$bool=true;var_dump($bool);echois_bool($bool);// null$n=null;var_dump($n);echois_null($n);// 数组(一维数组)$arr=array(1,2,3,4);// var_dump($arr);print_r($arr);echois_array($arr);?>

php运算符

1. 算术运算符
2. 关系运算符
3. 逻辑运算符
4. 赋值运算符
5. 三元运算符
6. 并置运算符(.)

php选择

  1. if语句
if( 条件1){}elseif( 条件2){}else{}

switch语句

switch( 数据1){case 数据2:break;default:}

php 循环

  1. for
for($初始值; 条件; 增量){}<?php
for($i=1;$i<=5;$i++){echo"The number is ".$i."<br>";}?>
  1. foreach
foreach($arrayas$value){}<?php$x=array("one","two","three");foreach($xas$value){echo$value."<br>";}?>
  1. while
while(条件){}
  1. do while
do{ }while(条件)

php字符串拼接之 并置运算符

字符串拼接方式:

  1. 借助 并置运算符(. 作用类似js中的+)
$str=$a." ".$b;echo$str;
  1. 可以直接在字符串中拼接变量(此方法仅适用于双引号"" 的字符串 ''不行)
$str="$a,$b";   类似ES6字符串模板拼接
    echo$str;
  1. 对于数组类型的取值拼接 如果需要多注意(将对应取值使用 {} 包裹起来)
$str=$GLOBALS["a"].",".$GLOBALS["b"];echo$str;$str="{$GLOBALS["a"]},{$GLOBALS["b"]}";echo$str;

php字符串的方法

一个中文占3个字节

strlen() 函数返回字符串的长度(字节数)
strlen() 函数返回字符串的长度(字节数)
一个中文占3个字节
$str="hello world!哈哈";$len=strlen($str);echo$len;
strpos() 函数 查找某个或某段字符第一次出现的位置

查找某个或某段字符第一次出现的位置 能查到返回对应的下标,

查不到 返回false

strpos() 函数  查找某个或某段字符第一次出现的位置  能查到返回对应的下标  查不到 返回false$str="good good study , day day up";$index=strpos($str,"day");echo$index;
explode() 用特定的字符 将字符串切割为数组
explode()  用特定的字符 将字符串切割为数组  (类似split)$str="good good study , day day up";$arr=explode(" ",$str);print_r($arr);
implode() 用特定的字符 将数组拼接为字符串
implode()  用特定的字符 将数组拼接为字符串  (类似join)join()implode() 的别名。
$arr=array("good","good","study",",","day","day","up");// print_r($arr);// $str = implode(" ",$arr);$str=join(" ",$arr);echo$str;
str_ireplace() 用新的字符串替换旧的字符串(忽略大小写)
str_ireplace()   用新的字符串替换旧的字符串(忽略大小写)str_replace()   用新的字符串替换旧的字符串(不忽略大小写)$str="good good study , day day up";$newStr=str_replace("day","money",$str);echo$newStr;
md5()加密
$pwd=123123;$newPwd=md5($pwd);echo$newPwd;
strlen() 函数返回字符串的长度(字节数)
    一个中文占3个字节
    $str="hello world!哈哈";$len=strlen($str);echo$len;strpos() 函数  查找某个或某段字符第一次出现的位置  能查到返回对应的下标  查不到 返回false$str="good good study , day day up";$index=strpos($str,"day");echo$index;explode()  用特定的字符 将字符串切割为数组  (类似split)$str="good good study , day day up";$arr=explode(" ",$str);print_r($arr);implode()  用特定的字符 将数组拼接为字符串  (类似join)join()implode() 的别名。
    $arr=array("good","good","study",",","day","day","up");// print_r($arr);// $str = implode(" ",$arr);$str=join(" ",$arr);echo$str;str_ireplace()   用新的字符串替换旧的字符串(忽略大小写)str_replace()   用新的字符串替换旧的字符串(不忽略大小写)$str="good good study , day day up";$newStr=str_replace("day","money",$str);echo$newStr;

php数组

  • 可以通过下标取值和赋值
  • 可被循环遍历
count() 函数
// 求数组的长度<?php$cars=array("Volvo","BMW","Toyota");echocount($cars);?>
语法
count(array,mode);

参数描述array必需。规定数组。mode可选。规定模式。可能的值:0 - 默认。不对多维数组中的所有元素进行计数1 - 递归地计数数组中元素的数目(计算多维数组中的所有元素)

说明

count() 函数计算数组中的单元数目或对象中的属性个数。

对于数组,返回其元素的个数,对于其他值,返回 1。如果参数是变量而变量没有定义,则返回 0。

如果 mode 被设置为 COUNT_RECURSIVE(或 1),则会递归底计算多维数组中的数组的元素个数。

遍历

image-20200825215740427

数组类型

在 PHP 中,有三种类型的数组:

  • 数值数组 - 带有数字 ID 键的数组;
  • 关联数组 - 带有指定的键的数组,每个键关联一个值;
  • 多维数组 - 包含一个或多个数组的数组;
数值数组
// 定义数组$arr=array('a','b','c');// 数量$arrlength=count($arr);// 结构中显示键值print_r($arr);//遍历数组for($x=0;$x<$arrlength;$x++){echo$cars[$x];echo"<br>";}

二维数组

image-20200826163741639

关联数组(索引数组)

以键值对形式存在的数组,类似js中的对象

// 关联数两种创建方式//1. 声明数组的时候,直接赋值$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");//2.  先声明空数组,再赋值$age=array();$age['Peter']="35";$age['Ben']="37";$age['Joe']="43";print_r($array);// 结构中显示键值//遍历关联数组foreach($ageas$x=>$x_value){// $array  as $key=>$valecho"Key=".$x.", Value=".$x_value;echo"<br>";}
多维数组
$arr=array(array("goodsId"=>"A001","goodsName"=>"Redmi K30","goodsMsg"=>"120Hz流速屏,全速热爱","goodsImg"=>"https://cdn.cnbj1.fds.api.mi-img.com/mi-mall/2c16238f786e4f93bdb175d7bf21aa47.jpg?thumb=1&w=250&h=250&f=webp&q=90","goodsPrice"=>1559,"buyNum"=>1),array("goodsId"=>"A002","goodsName"=>"Redmi K30","goodsMsg"=>"120Hz流速屏,全速热爱","goodsImg"=>"https://cdn.cnbj1.fds.api.mi-img.com/mi-mall/2c16238f786e4f93bdb175d7bf21aa47.jpg?thumb=1&w=250&h=250&f=webp&q=90","goodsPrice"=>1559,"buyNum"=>1),array("goodsId"=>"A003","goodsName"=>"Redmi K30","goodsMsg"=>"120Hz流速屏,全速热爱","goodsImg"=>"https://cdn.cnbj1.fds.api.mi-img.com/mi-mall/2c16238f786e4f93bdb175d7bf21aa47.jpg?thumb=1&w=250&h=250&f=webp&q=90","goodsPrice"=>1559,"buyNum"=>1),array("goodsId"=>"A004","goodsName"=>"Redmi K30","goodsMsg"=>"120Hz流速屏,全速热爱","goodsImg"=>"https://cdn.cnbj1.fds.api.mi-img.com/mi-mall/2c16238f786e4f93bdb175d7bf21aa47.jpg?thumb=1&w=250&h=250&f=webp&q=90","goodsPrice"=>1559,"buyNum"=>1),array("goodsId"=>"A005","goodsName"=>"Redmi K30","goodsMsg"=>"120Hz流速屏,全速热爱","goodsImg"=>"https://cdn.cnbj1.fds.api.mi-img.com/mi-mall/2c16238f786e4f93bdb175d7bf21aa47.jpg?thumb=1&w=250&h=250&f=webp&q=90","goodsPrice"=>1559,"buyNum"=>1),);

PHP返回JSON数据

json_encode() 接收一个数组(json对象)

转化为json类型的字符串

此方法主要用来做后端数据返回(JS0N类型的字符串)

php最终将运行结果 以html形式输出到浏览器

中文会默认编码

// json_encode() JSON对象转为JSON字符串$obj=array("a"=>"你好","b"=>"hello123");$str2=json_encode($obj,JSON_UNESCAPED_UNICODE);echo$str2;

image-20200826165418519

json_decode() JSON字符串转为JSON对象
// json_decode() JSON字符串转为JSON对象$str='{"a":"你好", "b":"hello123"}';$obj=json_decode($str);var_dump($obj);
// json_decode() JSON字符串转为JSON对象$str='{"a":"你好", "b":"hello123"}';$obj=json_decode($str);var_dump($obj);// json_encode() JSON对象转为JSON字符串$obj=array("a"=>"你好","b"=>"hello123");$str2=json_encode($obj,JSON_UNESCAPED_UNICODE);echo$str2;

PHP数组的方法

数组头尾新增和删除
array_unshift();  头部新增
array_push();     尾部新增

array_shift()   头部删除
array_pop()     尾部删除
$arr=array("x","y","z");array_unshift($arr,1);array_push($arr,4);print_r($arr);array_shift($arr);array_pop($arr);print_r($arr);
数组增删改
array_splice()   任意位置增删改
$arr=array("x","y","z");array_splice($arr,1,1);// 新增array_splice($arr,1,0,"hello");//修改(先删再加)array_splice($arr,1,1,"hello");print_r($arr);
数组裁切
array_slice(startIndex,endIndex);[startIndex,endIndex]
$arr=array("x","y","z");$newList=array_slice($arr,1,1);print_r($newList);
数组反转
array_reverse();// 返回反转后的新数组
$arr=array("x","y","z");$list=array_reverse($arr);print_r($list)
数组转字符串
join()/implode()   数组转字符串 (注 join()     implode() 的别名)
$arr=array("x","y","z");$str=join($arr,"");$str=implode($arr,"");echo$str;
数组中是否存在某元素
in_array(item,$arr);// 存在返回true  不存在返回false
$arr=array("x","y","z");$res=in_array(1,$arr);echo$res;
数组排序;
普通数组(数值数组)
sort()- 对数组进行升序排列

rsort()- 对数组进行降序排列
//纯数字排序$list=array(4,6,2,22,11);sort($list);// rsort($list);print_r($list);//非纯数字排序$cars=array("Volvo","BMW","Toyota");sort($cars);print_r($cars);
关联数组
ksort()- 根据关联数组的键,对数组进行升序排列;krsort()- 根据关联数组的键,对数组进行降序排列;asort()- 根据关联数组的值,对数组进行升序排列;arsort()- 根据关联数组的值,对数组进行降序排列;
   $list=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
   ksort($list);
   // krsort($list);
   // asort($list);
   // arsort($list);
   print_r($list);

超级全局变量

PHP中预定义了几个超级全局变量(superglobals) ,这意味着它们在一个脚本的全部作用域中都可用。 你不需要特别说明,就可以在函数及类中使用;
PHP 超级全局变量列表:

  • $GLOBALS
  • $_SERVER
  • $_REQUEST
  • $_POST
  • $_GET
PHP $GLOBALS

$GLOBALS 是PHP的一个超级全局变量组,在一个PHP脚本的全部作用域中都可以访问。

$GLOBALS 是一个包含了全部变量的全局组合数组。变量的名字就是数组的键。

    $a = 100;
    $b = 200;
    echo $$GLOBALS["a"] + $GLOBALS["b"];

判断某一列中是否存在某个值

image-20200829174047443

image-20200829174353939

PHP $_SERVER

$_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。这个数组中的项目由 Web 服务器创建。不能保证每个服务器都提供全部项目;服务器可能会忽略一些,或者提供一些没有在这里列举出来的项目。
属性描述$_SERVER[‘SERVER_ADDR’]当前运行脚本所在的服务器的 IP 地址。$_SERVER[‘SERVER_NAME’]当前运行脚本所在的服务器的主机名。如果脚本运行于虚拟主机中,该名称是由那个虚拟主机所设置的值决定$_SERVER[‘SERVER_PROTOCOL’]请求页面时通信协议的名称和版本。例如,“HTTP/1.0”。$_SERVER[‘REQUEST_METHOD’]访问页面使用的请求方法;例如,“GET”, “HEAD”,“POST”,“PUT”。$_SERVER[‘REQUEST_TIME’]请求开始时的时间戳。从 PHP 5.1.0 起可用。 (如:1377687496)$_SERVER[‘QUERY_STRING’]query string(查询字符串),如果有的话,通过它进行页面访问。$_SERVER[‘REMOTE_ADDR’]浏览当前页面的用户的 IP 地址。$_SERVER[‘REMOTE_HOST’]浏览当前页面的用户的主机名。DNS 反向解析不依赖于用户的 REMOTE_ADDR。$_SERVER[‘REMOTE_PORT’]用户机器上连接到 Web 服务器所使用的端口号。

    |属性|描述|
    |$_SERVER['SERVER_ADDR']    |当前运行脚本所在的服务器的 IP 地址。|
    |$_SERVER['SERVER_NAME']    |当前运行脚本所在的服务器的主机名。如果脚本运行于虚拟主机中,该名称是由那个虚拟主机所设置的值决定|
    |$_SERVER['SERVER_PROTOCOL']|请求页面时通信协议的名称和版本。例如,"HTTP/1.0"。|
    |$_SERVER['REQUEST_METHOD']    |访问页面使用的请求方法;例如,"GET", "HEAD","POST","PUT"。|
    |$_SERVER['REQUEST_TIME']   |请求开始时的时间戳。从 PHP 5.1.0 起可用。 (如:1377687496)|
    |$_SERVER['QUERY_STRING']   |query string(查询字符串),如果有的话,通过它进行页面访问。|
    |$_SERVER['REMOTE_ADDR']    |浏览当前页面的用户的 IP 地址。|
    |$_SERVER['REMOTE_PORT']    |用户机器上连接到 Web 服务器所使用的端口号。|
    @header("content-type:text/html;charset=utf-8");// 服务端echo"服务器地址:"."{$_SERVER['SERVER_ADDR']}<br>";echo"服务器的主机名:"."{$_SERVER['SERVER_NAME']}<br>";echo"服务器的主机名的端口:"."{$_SERVER['SERVER_PORT']}<br>";echo"请求页面时通信协议的名称和版本:"."{$_SERVER['SERVER_PROTOCOL']}<br>";// 请求echo"访问页面使用的请求方法:"."{$_SERVER['REQUEST_METHOD']}<br>";echo"请求开始时的时间戳:"."{$_SERVER['REQUEST_TIME']}<br>";echo"query string(查询字符串):"."{$_SERVER['QUERY_STRING']}<br>";// 客户端echo"浏览当前页面的用户的 IP 地址:"."{$_SERVER['REMOTE_ADDR']}<br>";echo"用户机器上连接到Web服务器所使用的端口号:"."{$_SERVER['REMOTE_PORT']}<br>";

image-20200827101829530

PHP $_GET

$_GET 广泛接收以GET方式传递过来的数据 (form传递/ajax传递),我们可以使用超级全局变量 $_GET 来对应字段(键名)的数据

注意

  • 前端传递的参数数据队列的键名,必须和后端$_GET[“xxx”]接收的键名对应)
  • image-20200827103242641
表单提交

html页面结构

    <form action="../php/get.php" method="GET">
        <div>
            <label for="user">用户名</label>
            <input name="user" type="text">
            <span class="user_span"></span>
        </div>
        <div>
            <label for="pwd">密码:</label>
            <input name="pwd" type="text">
            <span class="pwd_span"></span>
        </div>
        <div>
            <button id="logBtn">注册</button>
            <input type="reset">
        </div>
    </form>

get.php

    $user = $_GET["user"];  
    $pwd = $_GET["pwd"];
    echo $user."=>".$pwd;
ajax提交

禁用表单提交

image-20200827110805607

image-20200827111222162

image-20200827111639379

PHP $_POST

$_POST 广泛接收以POST方式传递过来的数据 (form传递 / ajax传递),我们可以使用超级全局变量 $_POST 来对应字段(键名)的数据

html页面结构

    <form action="../php/post.php" method="POST">
        <div>
            <label for="user">用户名</label>
            <input name="user" type="text">
            <span class="user_span"></span>
        </div>
        <div>
            <label for="pwd">密码:</label>
            <input name="pwd" type="text">
            <span class="pwd_span"></span>
        </div>
        <div>
            <button id="logBtn">注册</button>
            <input type="reset">
        </div>
    </form>

post.php

    $user = $_POST["user"];  
    $pwd = $_POST["pwd"];
    echo $user."=>".$pwd;
PHP $_REQUEST

$_REQUEST 广泛接收以(get/post都可以)方式传递过来的数据 (form传递/ajax传递),我们可以使用超级全局变量 $_REQUEST 来对应字段(键名)的数据

html页面结构

    <form action="../php/post.php" method="POST">
        <div>
            <label for="user">用户名</label>
            <input name="user" type="text">
            <span class="user_span"></span>
        </div>
        <div>
            <label for="pwd">密码:</label>
            <input name="pwd" type="text">
            <span class="pwd_span"></span>
        </div>
        <div>
            <button id="logBtn">注册</button>
            <input type="reset">
        </div>
    </form>

post.php

    $user = $_REQUEST["user"];  
    $pwd = $_REQUEST["pwd"];
    echo $user."=>".$pwd;

接口书写流程

  • 接口的编写
  • 手动打开接口测试
  • 前后端联调(前端发送 => 后端 => 返回)

image-20200827111731784

根据数据生成页面

  • 读取数据连数据 ==>假数据模拟include加载数组文件
  • 解析数据
  • 生成html代码,

随机数函数rand()

$grade=rand(0,100);//随机数(start,end) echo$grade;
标签: php 开发语言

本文转载自: https://blog.csdn.net/qq_40588441/article/details/139823481
版权归原作者 若梦plus 所有, 如有侵权,请联系我们删除。

“PHP基础”的评论:

还没有评论