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

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

php速成_day2的更多相关文章

  1. 《LoadRunner12七天速成宝典》来了

    看到自己的新书又要发行了,算算从09年第一本书开始,不知不觉已经是第四本书了(帮朋友合写的书不算),每次写完之后都会说太累了,不想再写了,但是却又次次反悔,吞下食言的苦果.如果非要说第四本书的感受,那 ...

  2. Java正则速成秘籍(一)之招式篇

    导读 正则表达式是什么?有什么用? 正则表达式(Regular Expression)是一种文本规则,可以用来校验.查找.替换与规则匹配的文本. 又爱又恨的正则 正则表达式是一个强大的文本匹配工具,但 ...

  3. Java正则速成秘籍(二)之心法篇

    导读 正则表达式是什么?有什么用? 正则表达式(Regular Expression)是一种文本规则,可以用来校验.查找.替换与规则匹配的文本. 又爱又恨的正则 正则表达式是一个强大的文本匹配工具,但 ...

  4. Java正则速成秘籍(三)之见招拆招篇

    导读 正则表达式是什么?有什么用? 正则表达式(Regular Expression)是一种文本规则,可以用来校验.查找.替换与规则匹配的文本. 又爱又恨的正则 正则表达式是一个强大的文本匹配工具,但 ...

  5. 【小白的CFD之旅】08 CFD速成之道

    学了那么一个星期的流体力学,又看了一周的计算流体力学,小白对于如何应用CFD解决工程流体问题,依然是一无所知.眼看一个月的时间已经过半,小白有点着急起来.于是在一个阳光明媚的早晨,小白又找到了黄师姐. ...

  6. 一个简单的html5页面在线速成工具!(当然本文主要说下他的成果的结构)

    分享一个好玩的web app页面速成工具 当然主要是让大家看下他的原理 看着他的结构大家就该猜到这个了.这个是利用换页之后给当前div加了一个active,然后利用css控制效果 这个毫无疑问是采用最 ...

  7. 高手速成android开源项目【导航篇】

    Android开发又将带来新一轮热潮,很多开发者都投入到这个浪潮中去了,创造了许许多多相当优秀的应用.其中也有许许多多的开发者提供了应用开源项目,贡献出他们的智慧和创造力.学习开源代码是掌握技术的一个 ...

  8. 【翻译】CEDEC2015 速成Albedo Chart 制作

        关于pbr材质和贴图的制作,最近llegorithmic提供了几篇不错的guide  https://www.allegorithmic.com/pbr-guide   不过像如何从通过现实场 ...

  9. 30天,O2O速成攻略【8.30南京站】

    活动概况 时间:2015年8月30日13:30-16:30 地点:啡咖啡·孵化器(南京市玄武大道699-22号江苏软件园22栋) 主办:APICloud.Udesk.人为峰 网址:www.apiclo ...

随机推荐

  1. netty权威指南学习笔记五——分隔符和定长解码器的应用

    TCP以流的方式进行数据传输,上层应用协议为了对消息进行区分,通常采用以下4中方式: 消息长度固定,累计读取到长度综合为定长LEN的报文后,就认为读取到了一个完整的消息,将计数器置位,重新开始读取下一 ...

  2. Java8集合框架——HashSet源码分析

    本文的目录结构: 一.HashSet 的 Javadoc 文档注释和简要说明 二.HashSet 的内部实现:内部属性和构造函数 三.HashSet 的 add 操作和扩容 四.HashSet 的 r ...

  3. Python基础笔记:函数式编程:高阶函数、返回函数、匿名函数

    高阶函数 高阶函数:一个函数可以接收另一个函数作为参数 或 一个函数可以返回一个函数作为返回值,这种函数称之为高阶函数. #函数 add 接收 f 函数作为参数 >>> def ad ...

  4. bugku - pwn wp

    一. PWN1 题目:nc 114.116.54.89 10001 1.  直接kali里面跑nc 2.ls看看有啥 3.明显有一个flag cat查看一下 搞定 二 . PWN2 题目:给了nc 1 ...

  5. 117-PHP在外部无法调用private类成员函数

    <?php class ren{ //定义人类 public function walk(){ //定义public成员方法 echo '我会走路.'; } private function d ...

  6. 分享一个php加密字符串类。

    class base64{ /** * 加密字符串 * @access static * @param string $data 字符串 * @param string $key 加密key * @r ...

  7. SQL中行转列(PIVOT)与列转行(UNPIVOT)

    一.行转列 1.测试数据准备 CREATE TABLE [StudentScores] ( ), --学生姓名 ), --科目 [Score] FLOAT, --成绩 ) 执行结果: 2.行转列sql ...

  8. K均值聚类算法

    k均值聚类算法(k-means clustering algorithm)是一种迭代求解的聚类分析算法,其步骤是随机选取K个对象作为初始的聚类中心,然后计算每个对象与各个种子聚类中心之间的距离,把每个 ...

  9. Nmap目录扫描和漏洞扫描(9.27 第十三天)

    目录扫描:扫描站点的目录,寻找敏感文件(目录名.探针文件.后台.robots.txt[].备份文件等) 目录:站点结构,权限控制不严格 探针文件:服务器配置信息,phpinfo.php   readm ...

  10. MFC 选择文件夹

    WCHAR szPath[_MAX_PATH] = {}; BROWSEINFO bi; //指定父窗口,在对话框显示期间,父窗口将被禁用 bi.hwndOwner = this->GetSaf ...