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、解决后续问题

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

    坚持这种真诚,那么总归能遇到良人。
  • 相关阅读:
    本地计算机 上的 Redis Server 服务启动后停止
    RabbitMQ 命令行
    mysql ORDER BY 中文出现错误问题
    使用javascript纯前端导出excel
    软件测试概念学习
    excel控件只为简单写入数据表--github找到ExcelUtil笔记
    快速创建Spring web项目
    PQGrid商业化的表格组件
    mybatis传入参数为0被误认为是空字符串的解决方法
    MyBatis like报错
  • 原文地址:https://www.cnblogs.com/jiaxiaozia/p/12323495.html
Copyright © 2011-2022 走看看