zoukankan      html  css  js  c++  java
  • php速成_day2

    一、PHP中的多维数组

    1、多维数组及其用途

    多维数组用来存储多个元素,元素是一个数组的结构。

    之前学习的数组,是一个一维数组。

    $person = array(
    ‘name’ => ‘xiaoming’,
    ‘age’=>26,
    ‘job’=> ‘PHP’
    );
    

    可以使用多维数组,进行同时存储多个人的信息。

    多维数组的写法

    语法:

    $depatment = array(
    array(‘name’=> ‘xiaoming’,‘age’=> 26, ‘job’=> ‘PHP’),
    array(‘name’ => ‘jerry’, ‘age’=> 23, ‘job’ =>‘HTML’),
    .........
    );
    

    一般编程中,使用较多的是二维数组,最多使用三维数组。

    2、多维数组的使用

    <?php
    // header
    header('Content-Type:text/html;charset=utf8');
    // 多维数组
    // 表示一个部门里的多个人
    $depatment = array(
      array('name' => 'xiaoming','age' => 26,'job' => 'PHP' ),
      array('name' => 'jerry','age' => 23,'job' => 'HTML' ),
      array('name' => '小强','age' => 25,'job' => 'C' ),
    );
    // 原样输出
    echo '<pre>';
    // 数组可以通过print_r输出
    print_r($depatment);
    // 输出显示多维数组
    // var_dump($depatment);
    // 输出二维数组里的第一个元素
    // 数组不能够使用echo输出
    // echo $depatment[0];
    // var_dump($depatment[0]);
    // echo '<hr>';
    // var_dump($depatment[0]['name']);
    

    之前访问一维数组的方式,是可以同索引数组通过下标,关联数组是通过key进行访问。

    Tip:数组也可以通过print_r 输出

    总结:刚才所使用的二维数组,外层数组是一个索引数组,内层的一维数组是关联数组。

    3、遍历多维数组

    • for遍历
    <?php
    // header
    header('Content-Type:text/html;charset=utf8');
    // 多维数组
    // 表示一个部门里的多个人
    $depatment = array(
      array('name' => 'xiaoming','age' => 26,'job' => 'PHP' ),
      array('name' => 'jerry','age' => 23,'job' => 'HTML' ),
      array('name' => '小强','age' => 25,'job' => 'C' ),
    );
    // 遍历二维数组
    // 获取数组元素的个数
    $count = count($depatment);
    // for遍历
    for($i=0;$i<$count;$i++){
      var_dump($depatment[$i]);
    }
    

    count()函数可以统计数组的元素个数

    for循环可以遍历二维数组中外层的索引数组

    • foreach遍历
    <?php
    header('Content-Type:text/html;charset=utf8');
    // 多维数组
    // 表示一个部门里的多个人
    $depatment = array(
      array('name' => 'xiaoming','age' => 26,'job' => 'PHP' ),
      array('name' => 'jerry','age' => 23,'job' => 'HTML' ),
      array('name' => '小强','age' => 25,'job' => 'C' ),
    );
    // foreach
    foreach ($depatment as $key => $value) {
      // 遍历最外层
      foreach ($value as $k => $v) {
        echo $k.':'.$v.'<br />';
      }
      echo '<hr>';
    }
    

    二、PHP中的函数

    1、什么是函数

    ​ 函数是一个被命名、独立的代码段,它执行特定的任务,并可能给调用它的程序返回一个值。

    • 函数是被命名的。每个函数都有唯一的名称,在程序的其他部分使用该名称,可以执行函数中的语句,这个被称为调用函数。
    • 函数时独立的。无需程序其他部分的干预,函数便能够执行其任务。
    • 函数执行特定的任务。任务是程序运行时所执行的具体工作,如将一行文本输出到浏览器、对数组进行排序、计算立方根等。
    • 函数可以将一个返回值返回给调用它的程序。程序调用函数时,将执行该函数中语句,而这些语句可以将信息返回给调用它们的程序。

    2、函数的定义

    function 函数名(参数){
    	执行的代码;
        return 返回值;
    }
    

    3、函数的功能

    • 代码重用,相同的操作,无需再此编写,可以直接调用此函数,实现功能

    • 模块化编程 使代码结构更加清晰好用

    4、函数的起源

    例1:想要进行打招呼的一个操作

    <?php
    // header
    header('Content-Type:text/html;charset=utf8');
    // 函数使用
    // 爸爸打招呼
    // echo '你好';
    // // 妈妈打招呼
    // echo '你好';
    // // 姐姐
    // echo '你好';
    // 函数定义
    // 打招呼的一个函数
    function sayHello($name)
    {
      // return返回值
      // 函数return之后,后续代码都不执行
      return '你好,'.$name;
    }
    // 调用函数进行打招呼
    // 爸爸打招呼
    echo sayHello('爸爸');
    echo '<hr>';
    // 妈妈打招呼
    echo sayHello('妈妈');
    echo '<hr>';
    // 姐姐打招呼
    echo sayHello('姐姐');
    

    形参:在函数定义时,写一个参数。

    实参:在函数调用执行时,传入的参数。

    注意:return之后的代码都不执行了。

    5、PHP中函数的类型

    ​ PHP中可以使用大量函数,既可以使用系统内部定义好的函数,也可以自行实现自定义函数,来提高代码的重用性。

    函数的类型:

    • 系统函数 PHP内部的函数 5000+种

    • 自定义函数 用户 程序员自己定义的函数

    6、PHP中的系统函数(手册查询)

    使用PHP系统函数,可以使代码更加节省。

    • 日期和时间函数

      //设置php的时间函数时区

      date_default_timezone_set()

      date_dafault_timezone_set(“PRC”)

      备注:PRC是中华人民共和国(The People's Republic of China )

    <?php
    // 设置中国人民共和国时间
    date_default_timezone_set('PRC');
    // 设置显示时间
    // 获取年份year
    echo date('Y');
    // 获取月份month
    echo '<hr>';
    echo date('m');
    // 获取天day
    echo '<hr>';
    echo date('d');
    // 获取小时
    echo '<hr>';
    echo date('H');
    // 分钟
    echo '<hr>';
    echo date('i');
    // 秒
    echo '<hr>';
    echo date('s');
    echo '<hr>';
    echo date('Y-m-d H:i:s');
    echo '<hr>';
    // 时间戳
    echo time();
    // 通过传入的时间戳,格式化为一个时间
    echo '<hr>';
    echo date('Y-m-d H:i:s',time());
    

    date() ,如2010-04-09 01:48:06

    显示的时间和我们的时间(北京时间)

    time()返回当前的 Unix 时间戳

    从1970年0时开始,距离这个时间的间隔,被称为时间戳。

    Tip:在学习PHP函数过程中,学会使用查询手册

    • 字符串函数(函数较多)

      • explode() 使用一个字符串分割另一个字符串输出数组
        • 第一个参数 分割的标记
        • 第二个参数 需要分割的字符串
      <?php
      // 分隔符字符串
      $str = 'hello ,php';
      $array= explode(',',$str);
      var_dump($array);
      //取出字符串中的php
      echo '<hr>';
      echo $array[1];
      
      • implode() Join array elements with a string输出字符串

        类似于胶水的功能,把数组中的元素,通过某一个标记,进行粘连起来

        • 第一个参数:以什么标记粘连,可以传空字符串

        • 第二个参数:需要粘连的数组

      • md5() 用MD5方式加密字符串,返回是32位字符串

        在数据库存储密码,不能够明码存储,需要进行加密操作

      • strlen() 获取字符串的长度

      • stristr() 查找字符串在另一个字符串中第一次出现位置 并返回

        • 第一个参数:查询的字符串

        • 第二个参数:需要查找的字符

      • mb_strlen() 获取字符串的长度

        • 第一个参数:查询的字符串

        • 第二个参数:字符串的编码格式

        多字节字符的使用函数,中文的utf8编码,一个字占3个字节

      • trim() 去掉字符串两端的空格

        • 第一个参数:需要处理的字符串

        • 第二个参数:需要去掉的字符串的标识,默认可以不传,去除空格

      • str_repeat() 重复一个字符串

        • 第一个参数:需要重复的字符串

        • 第二个参数:需要重复的次数

      • str_replace() 子字符串替换

        • 第一个参数:查询需要替换的字符串

        • 第二个参数:替换称为什么

        • 第三个参数:替换的字符串

    • 数学函数

      • rand() 产生一个随机整数

        • 可以不传参数,也可以传参数

        • 第一个参数,返回的最小值 min

        • 第二个参数,返回的最大值 max

      • eil() 进一法取整 向上取整

      • floor() 舍去法取整 向下取整

      • round() 对浮点数进行四舍五入

    三个函数的第一个参数都是需要处理的float浮点数。round函数的第二个参数,可以进行选择十进制小数需要保留的位数。

    7、综合案例:生成4位随机验证码

    使用PHP的系统函数、字符串函数和数学随机值函数。实现验证码的随机值(4位)

    验证码的字符串:大小写字母、数字

    思路:通过每次生成一个随机的字符串,拼接起来

    ①每次生成一个随机的字符串

    ②生成4次

    ③把4个字符串进行拼接

    Tip:字符串也可以通过下标的方式访问字符串

    $str = ‘abcd‘

    b就是$str[1]

    <?php
    // header响应头
    header('Content-Type:text/html;charset=utf8');
    // 定义函数
    function code($length)
    {
      // 验证码的随机码的生成 4位
      // 随机码包含元素定义
      $str = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
      // echo $str[10];
      // 最后一位的下边,最大的下标
      $max = strlen($str) - 1;
      // echo $max;
      // 定义随机码
      $code = '';
      // 循环拼接字符串
      for($i=0;$i<$length;$i++){
        // 先拼接再赋值
        $code .= $str[mt_rand(0,$max)];
      }
      echo '验证码的值为:'.$code;
    }
    // 函数调用
    code(4);
    

    三、文件包含

    1、什么是文件包含

    在很多网页会存在一些公共部分。可以把这些公共部分,进行分离出来。

    其他页面有使用到这些公共部分,就可以直接引入。

    2、模版分离的步骤

    页面一般可以使用 ’三刀’。把页面的公共的页头(header)和页脚(footer)。其他页面可以使用公共的页头和页脚。

    • 把公共的页头和页脚进行抽离出来
    • 把页头和页脚的文件保存到一个公共文件夹(public)
    • 其他页面使用可以直接通过PHP对应语法进行引入即可

    3、模版分离实战

    • 把页头和页脚进行分离
    • 创建public公共文件夹存储公共部分
    <!-- 页头部分 -->
    这是是头部的显示部分
    <hr>
    
    • 通过php的包含语法进行引入操作

    语法:

    include 和 require

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Document</title>
    </head>
    <body>
    <?php //include './public/header.php';?>
    <?php require_once './public/header.php';?>
    <?php require_once './public/header.php';?>
    <!-- 页面主体部分 -->
    这是页面主体的部分
    <?php //include './public/footer.php';?>
    <?php require_once './public/footer.php';?>
    <?php require_once './public/footer.php';?>
    </body>
    </html>
    

    4、include 和 require的区别

    • include的包含,如果加载的文件不存在,会报一个警告错误,但是不会影响后面代码的执行
    • require如果发生错误,会报一个致命错误,结束后续代码的运行

    5、include_core 和 require_core的区别

    once包含一次,避免重复包含文件

    总结:一般情况下在开发中,为了避免由于包含代码出现错误,造成的后续代码错误,就使用require。如果在生产环境,项目上线了最好使用include。

    require_once和include_once如果文件包含较多,可以使用。但是它是性能消耗的,会先判断是否引入了目前需要引入的文件。

    四、实现简单注册功能

    1、编写表单

    表单是HTML页面进行数据提交的一种方式

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>程序员注册页面</title>
    </head>
    <body>
      <form action="do.php" method="post">
        姓名<input type="text" name="name" />
        <hr>
        密码<input type="password" name="password" />
        <hr>
        性别<input type="radio" name="sex" value="男" checked="checked" />男
            <input type="radio" name="sex" value="女" />女
            <input type="radio" name="sex" value="保密" />保密
        <hr>
        爱好<input type="checkbox" name="hobby[]" value="吃饭">吃饭
            <input type="checkbox" name="hobby[]" value="睡觉">睡觉
            <input type="checkbox" name="hobby[]" value="打豆豆" checked="checked">打豆豆
        <hr>
        备注<textarea name="remark" cols="40" rows="10"></textarea>
        <hr>
        <input type="submit" name="submit" value="注册">
        <input type="reset" name="reset" value="重置">
      </form>
    </body>
    </html>
    

    表单的注意点:

    所有的表单元素必须在form标签中

    action 提交到的文件地址

    method 提交数据的请求方式 服务器端页面会根据此方法进行数据接受

    文本框

    密码框

    单选按钮

    多选按钮

    文本域

    提交按钮 重置按钮

    2、表单的接收

    表单的接收数据的方式。根据表单提交方式:

    • get 数据会从浏览器url地址显示 $_GET
    • post 不会显示在url地址上 传输数据更大一些 $_POST
    <?php
    // header响应头信息
    header('Content-Type:text/html;charset=utf8');
    // 接收用户提交的表单数据
    // var_dump($_POST);
    // 判断表单是否提交
    if(isset($_POST['submit'])){
      echo '姓名:'.$_POST['name'];
      echo '<hr>';
      echo '密码:'.$_POST['password'];
      echo '<hr>';
      echo '性别:'.$_POST['sex'];
      // 处理爱好
      $hobbyArray = $_POST['hobby'];
      // 把数组拼接成为字符串
      $hobby = implode(',', $hobbyArray);
      echo '<hr>';
      echo '爱好:'.$hobby;
      echo '<hr>';
      echo '备注:'.$_POST['remark'];
    }
    

    3、完善表单的接受功能

    isset函数检测是否存在,存在返回true,否则false,这里用来检测表单是否提交

    4、复选框的接收和处理

    复选框可以接收到数组信息,之后可以通过系统函数进行拼接起来。

    表单页面的处理

    5、接收用户的注册信息

    五、文件上传

    1、什么是文件上传

    文件上传也就是把用户的文件上传服务器的操作。

    用户会员中心的头像,需要用户上传。头像上传

    2、文件上传的准备(表单)

    • 表单提交方式必须为post
    • 表单属性 enctype="multipart/form-data"
    • input type属性使用file

    3、服务器端(php页面)接收上传文件

    服务器端PHP页面接收用户上传的文件信息,通过$_FILES接收

    • $FILES["userfile"]["name"] 上传文件的名称
    • _$_FILES["userfile"]["type"] 上传文件的类型
    • $FILES["userfile"]["size"] 上传文件的大小
    • _$_FILES["userfile"]["tmp_name"] 上传文件的临时名称及其位置
    • $_FILES["userfile"]["error"] 上传是否存在错误信息

    4、实现文件上传功能

    实现文件上传,也就是把文件移动到对应的文件夹的操作

    move_uploaded_file(临时文件位置,移动到的位置)

    5、解决后续问题

    生成规定格式的文件名称,解决文件覆盖的问题和统一命名的规范

    坚持这种真诚,那么总归能遇到良人。
  • 相关阅读:
    巴洛克式和哥特式的区别
    推荐阅读书籍,是时候再行动起来了。
    AtCoder ABC 159F Knapsack for All Segments
    AtCoder ABC 159E Dividing Chocolate
    AtCoder ABC 158F Removing Robots
    AtCoder ABC 158E Divisible Substring
    AtCoder ABC 157F Yakiniku Optimization Problem
    AtCoder ABC 157E Simple String Queries
    AtCoder ABC 157D Friend Suggestions
    AtCoder ABC 156F Modularness
  • 原文地址:https://www.cnblogs.com/jiaxiaozia/p/12323495.html
Copyright © 2011-2022 走看看