php

PHP初识

为什么学php?

为了熟悉前后端交互 业务流程 学习php

安装PHPstudy?

 通过live server 起的假的服务,不能做逻辑处理(没有php的运行环境)   所以学习php

什么是php?

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

PHP 文件是什么?

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

PHP 能做什么?

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

安装 phpstudy 包含两个内容

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

  • Windows 系统可以使用phpStudy
  • XAMPP
    XAMPP 支持 Mac OS 和 Windows 系统,下载地址:https://www.apachefriends.org/zh_cn/index.html。

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

学习phpstudy 的注意事项

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

PHP基础语法

怎样使用php

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

<?php
// PHP 代码
?>

注意:

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

php的输出语法

  1. echo 可以输出一个或多个字符串(多个字符串之间用逗号分隔);
  2. print 只允许输出一个字符串;
  3. print_r() 打印数组和对象;
<?php 
    echo "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>";


        // 在函数内声明的变量是局部变量
        function fn(){
            $x = 10;
            $y = 20;
            return $x+$y;
        }
        $result = fn();
        echo $result;
    ?>

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

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

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

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

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

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

php常量

常量是全局的
常量在定义后,默认是全局变量,可以在整个运行的脚本的任何地方使用。
定义方法:
1. 定义常量const
2. define(name,value)   
 name  常量名
 value  常量值
    <?php
        const a = 100;
        echo a;
        
        define("a",100);
        echo a."<br>";
    
    ?>

PHP数据类型

  1. php基本数据类型
    String(字符串), Integer(整型), Float(浮点型), Boolean(布尔型), Array(数组), Object(对象), NULL(空值);
    注:PHP var_dump() 函数返回变量的数据类型和值;
    除此之外还有 is_string(),is_int(),is_float(),is_bool(),is_null(),is_array() 是=> true(在页面显示为1 ) 不是返回 (false => “”)
<?php 
    // 字符串
    $str = "hello哈哈";
    var_dump($str);
    echo is_string($str);

    // 整型
    $int = 100;
    var_dump($int);
    echo is_int($int);

    // 浮点型
    $float = 100.50;
    var_dump($float);
    echo is_float($float);

    // 布尔
    $bool = true;
    var_dump($bool);
    echo is_bool($bool);
    
    // null
    $n = null;
    var_dump($n);
    echo is_null($n);


    // 数组(一维数组)
    $arr = array(1,2,3,4);
    // var_dump($arr);
    print_r($arr); 
    echo is_array($arr); 
?>

php运算符

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

php选择

  1. if语句
if( 条件1 ){

}else if( 条件2 ){

}else{

}

switch语句

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

php 循环

  1. for
for(初始值; 条件; 增量){}
  1. foreach
foreach( $array as $value ){}
  1. while
while(条件){}
  1. do while
do{ }while(条件)

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

字符串拼接方式:

  1. 借助 并置运算符(. 作用类似js中的+)
    $str = $a." ".$b;
    echo $str;
​````
2.  可以直接在字符串中拼接变量(此方法仅适用于"" 的字符串 ''不行)
$str = "$a,$b";   类似ES6字符串模板拼接
echo $str;

​    2.1对于数组类型的取值拼接 如果需要多注意(将对应取值使用 {} 包裹起来)

$str = $GLOBALS["a"].",".$GLOBALS["b"]; 
echo $str;
$str="{$GLOBALS["a"]},{$GLOBALS["b"]}";
echo $str;

php字符串的方法

strlen() 函数返回字符串的长度(字节数)。
$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数组
在 PHP 中,有三种类型的数组:

- 数值数组 - 带有数字 ID 键的数组;
- 关联数组 - 带有指定的键的数组,每个键关联一个值;
- 多维数组 - 包含一个或多个数组的数组;


1. 数值数组

// 定义数组
$arr = array(‘a’, ‘b’, ‘c’);

// 数量
$arrlength = count( $arr);    

// 结构中显示键值
print_r($arr);

//遍历数组
for($x=0;$x<$arrlength;$x++){
    echo $cars[$x];
    echo "<br>";
}

2. 关联数组

// 关联数两种创建方式  (以键值对形式存在的数组  类似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($age as $x=>$x_value){   // $array  as $key=>$val
    echo "Key=" . $x . ", Value=" . $x_value;
    echo "<br>";
}

3. 多维数组

$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
    ),
);

### JSON 
// 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(array, startIndex,endIndex);  [startIndex,length]
$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;

#### 数组去重

array_unique($arr) // 传入一个数组 返回去重后的新数组


a r r = [ 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ] ; p r i n t r ( a r r a y u n i q u e ( arr = [1,1,1,1,1,1,1,1,1,1]; print_r(array_unique( arr=[1,1,1,1,1,1,1,1,1,1];printr(arrayunique(arr));

数组排序;



a.普通数组(数值数组)

    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);



b. 关联数组;

    ksort() - 根据关联数组的键,对数组进行升序排列;
    krsort() - 根据关联数组的键,对数组进行降序排列;
    
    asort() - 根据关联数组的值,对数组进行升序排列;
    arsort() - 根据关联数组的值,对数组进行降序排列;

l i s t = a r r a y ( " P e t e r " = > " 35 " , " B e n " = > " 37 " , " J o e " = > " 43 " ) ; k s o r t ( list=array("Peter"=>"35","Ben"=>"37","Joe"=>"43"); ksort( list=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");ksort(list);
// krsort( l i s t ) ; / / a s o r t ( list); // asort( list);//asort(list);
// arsort( l i s t ) ; p r i n t r ( list); print_r( list);printr(list);

超级全局变量




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

- $GLOBALS
- $_SERVER
- $_REQUEST
- $_POST
- $_GET
- $_COOKIE
- $_SESSION


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

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

$a = 100;
$b = 200;
echo $GLOBALS["a"] + $GLOBALS["b"];
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>";
PHP $_GET


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

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;
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;












  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值