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() 子字符串替换
第一个参数:查询需要替换的字符串
第二个参数:替换称为什么
第三个参数:替换的字符串
- explode() 使用一个字符串分割另一个字符串输出数组
数学函数
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的更多相关文章
- 《LoadRunner12七天速成宝典》来了
看到自己的新书又要发行了,算算从09年第一本书开始,不知不觉已经是第四本书了(帮朋友合写的书不算),每次写完之后都会说太累了,不想再写了,但是却又次次反悔,吞下食言的苦果.如果非要说第四本书的感受,那 ...
- Java正则速成秘籍(一)之招式篇
导读 正则表达式是什么?有什么用? 正则表达式(Regular Expression)是一种文本规则,可以用来校验.查找.替换与规则匹配的文本. 又爱又恨的正则 正则表达式是一个强大的文本匹配工具,但 ...
- Java正则速成秘籍(二)之心法篇
导读 正则表达式是什么?有什么用? 正则表达式(Regular Expression)是一种文本规则,可以用来校验.查找.替换与规则匹配的文本. 又爱又恨的正则 正则表达式是一个强大的文本匹配工具,但 ...
- Java正则速成秘籍(三)之见招拆招篇
导读 正则表达式是什么?有什么用? 正则表达式(Regular Expression)是一种文本规则,可以用来校验.查找.替换与规则匹配的文本. 又爱又恨的正则 正则表达式是一个强大的文本匹配工具,但 ...
- 【小白的CFD之旅】08 CFD速成之道
学了那么一个星期的流体力学,又看了一周的计算流体力学,小白对于如何应用CFD解决工程流体问题,依然是一无所知.眼看一个月的时间已经过半,小白有点着急起来.于是在一个阳光明媚的早晨,小白又找到了黄师姐. ...
- 一个简单的html5页面在线速成工具!(当然本文主要说下他的成果的结构)
分享一个好玩的web app页面速成工具 当然主要是让大家看下他的原理 看着他的结构大家就该猜到这个了.这个是利用换页之后给当前div加了一个active,然后利用css控制效果 这个毫无疑问是采用最 ...
- 高手速成android开源项目【导航篇】
Android开发又将带来新一轮热潮,很多开发者都投入到这个浪潮中去了,创造了许许多多相当优秀的应用.其中也有许许多多的开发者提供了应用开源项目,贡献出他们的智慧和创造力.学习开源代码是掌握技术的一个 ...
- 【翻译】CEDEC2015 速成Albedo Chart 制作
关于pbr材质和贴图的制作,最近llegorithmic提供了几篇不错的guide https://www.allegorithmic.com/pbr-guide 不过像如何从通过现实场 ...
- 30天,O2O速成攻略【8.30南京站】
活动概况 时间:2015年8月30日13:30-16:30 地点:啡咖啡·孵化器(南京市玄武大道699-22号江苏软件园22栋) 主办:APICloud.Udesk.人为峰 网址:www.apiclo ...
随机推荐
- netty权威指南学习笔记五——分隔符和定长解码器的应用
TCP以流的方式进行数据传输,上层应用协议为了对消息进行区分,通常采用以下4中方式: 消息长度固定,累计读取到长度综合为定长LEN的报文后,就认为读取到了一个完整的消息,将计数器置位,重新开始读取下一 ...
- Java8集合框架——HashSet源码分析
本文的目录结构: 一.HashSet 的 Javadoc 文档注释和简要说明 二.HashSet 的内部实现:内部属性和构造函数 三.HashSet 的 add 操作和扩容 四.HashSet 的 r ...
- Python基础笔记:函数式编程:高阶函数、返回函数、匿名函数
高阶函数 高阶函数:一个函数可以接收另一个函数作为参数 或 一个函数可以返回一个函数作为返回值,这种函数称之为高阶函数. #函数 add 接收 f 函数作为参数 >>> def ad ...
- bugku - pwn wp
一. PWN1 题目:nc 114.116.54.89 10001 1. 直接kali里面跑nc 2.ls看看有啥 3.明显有一个flag cat查看一下 搞定 二 . PWN2 题目:给了nc 1 ...
- 117-PHP在外部无法调用private类成员函数
<?php class ren{ //定义人类 public function walk(){ //定义public成员方法 echo '我会走路.'; } private function d ...
- 分享一个php加密字符串类。
class base64{ /** * 加密字符串 * @access static * @param string $data 字符串 * @param string $key 加密key * @r ...
- SQL中行转列(PIVOT)与列转行(UNPIVOT)
一.行转列 1.测试数据准备 CREATE TABLE [StudentScores] ( ), --学生姓名 ), --科目 [Score] FLOAT, --成绩 ) 执行结果: 2.行转列sql ...
- K均值聚类算法
k均值聚类算法(k-means clustering algorithm)是一种迭代求解的聚类分析算法,其步骤是随机选取K个对象作为初始的聚类中心,然后计算每个对象与各个种子聚类中心之间的距离,把每个 ...
- Nmap目录扫描和漏洞扫描(9.27 第十三天)
目录扫描:扫描站点的目录,寻找敏感文件(目录名.探针文件.后台.robots.txt[].备份文件等) 目录:站点结构,权限控制不严格 探针文件:服务器配置信息,phpinfo.php readm ...
- MFC 选择文件夹
WCHAR szPath[_MAX_PATH] = {}; BROWSEINFO bi; //指定父窗口,在对话框显示期间,父窗口将被禁用 bi.hwndOwner = this->GetSaf ...