第九天(数组,预定义数组,函数,使用数据库)
复习:
掌握新语言的步骤:
(1)背景
(2)搭建环境
(3)变量和常量
(4)数据类型
标量类型:int、float、string、bool
复合类型:array、object
其它类型:null、resource
(5)运算符
算术、比较、逻辑、赋值、位、三目、特殊
(6)逻辑结构
顺序执行
选择执行 if…else… switch…case…break…
循环执行 while(){} do{ }while() for( ; ; ){ }
(7)通用小程序
※打印三角、九九乘法表、水仙花数、质数….
(8)函数和对象
(9)常用组件、工具、框架
(10)实用小项目
练习:输出100以内所有的整数
练习:输出100以内偶数的和
练习:输出100以内奇数的和
练习:输出Hello0、Hello1、Hello2…Hello10
今日目标:
(1)数组 —— 重点
(2)预定义数组 —— 重点
(3)函数 —— 掌握
(4)实用数据库连接函数 —— 重点&难点
1.PHP中的两种数组
(1)索引数组(Indexed Array):每个元素的下标都是一个数字,形如0、1、2…..N,数组的总长度为N+1
声明方式:$arr = [95, 78, 66];
$arr = ['丁丁', '当当','豆豆']
访问元素:echo $arr[$i];
添加元素:$arr[ ] = 80;
获取长度:echo count( $arr );
练习:创建一个数组,保存购物车中的三个商品的编号。
再向添加一个新的商品编号;再向添加一个新的商品编号;
输出现有的商品的数量;循环输出所有的商品编号
练习:创建一个数组,保存购物车中的三个商品的名称。
再向添加一个新的商品名称;再向添加一个新的商品名称;
输出现有的商品的数量;循环输出所有的商品名称
思考:一个PHP数组中可以放置纯数字、纯字符串,可以放置多个不同类型的值吗?
$arr = [ 8, ‘戴尔燃7000’, 5388.00, true, 1490123456789 ];
语法上可以!但实际项目中上述数组表意不清!
(2)关联数组(Assocation Array):每个元素的下标都是一个自定义的字符串,系统不会自动生成下标
声明语法:$arr = [ 'lid'=>8 , 'title'=>'戴尔燃7000', 'price'=>5388.00, 'isOnsale'=>true];
元素数量:echo count( $arr);
获取元素:echo $arr['title'];
添加元素:$arr['shelfTime'] = 1490132455679;
注意:关联数组每个元素的下标都是自定义的字符串,不是0/1/2/3...,不能使用传统for循环进行遍历。
$user['uname']."<br>"其中uname的单引号不能省略!
"$user[uname]<br>"其中的必须省略uname的单引号
练习:创建关联数字,保存一个用户的所有信息,编号、用户名、密码;
再向上述关联数字中添加新的下标:积分
再向上述关联数字中添加新的下标:是否在线
输出数组中元素的个数;
输出数字中每个元素的下标和值
2.逻辑结构——循环结构 —— foreach
foreach:对于数组中的每一对元素,都看作一个下标遍历指向一个值变量,都执行一次循环主体。
语法: foreach(
echovalue;
}
含义:依次把数组中的每一对下标=>值,赋值为指定的两个变量,执行一遍循环体。
提示:foreach循环既可以遍历关联数组,也可以遍历索引数组!
练习:创建一个关联数组,保存一个商品的信息,包括编号、名称、单价、上架时间,使用foreach遍历其中的每个元素。
练习:创建一个关联数组,保存一个商品的信息,包括编号、名称、单价、上架时间;
再创建一个关联数组,保存一个商品的信息,包括编号、名称、单价、上架时间;
再创建一个关联数组,保存一个商品的信息,包括编号、名称、单价、上架时间;
把上述三个关联数组保存在一个大的索引数组中,下标分别为0/1/2,使用循环输出整个大数组中所有的数据
练习:
创建一个关联数组,保存一个用户的信息,编号、用户名、电话、头像;
创建一个关联数组,保存一个用户的信息,编号、用户名、电话、头像;
创建一个关联数组,保存一个用户的信息,编号、用户名、电话、头像;
再创建一个索引数组,包含上述三个关联数组。
尝试使用for循环输出上面的大数组中的所有数据;
尝试使用foreach循环输出上面的大数组中的所有数据;
<?php
/** 二维数组 **/
#创建一个关联数组,保存一个用户的信息,编号、用户名、电话、头像;
$user0 = [
'uid'=>10,
'uname'=>'dingding',
'phone'=>'13501234567',
'avatar'=>'img/10.jpg'
];
$user1 = [
'uid'=>11,
'uname'=>'doudou',
'phone'=>'13511234567',
'avatar'=>'img/11.jpg'
];
$user2 = [
'uid'=>12,
'uname'=>'yaya',
'phone'=>'13521234567',
'avatar'=>'img/12.jpg'
];
//一个大数组,盛放上述三个小数组
$userList = [$user0, $user1, $user2];
#var_dump($userList);
for($i=0; $i<count($userList); $i++){
$u = $userList[$i]; //获取大数组中的每个用户
echo $u['uid']." ";
echo $u['uname']." ";
echo $u['phone']." ";
echo $u['avatar']."<br>";
}
echo "<hr>";
foreach($userList as $v){ //遍历大数组中的每个用户
echo $v['uid']." ";
echo $v['uname']." ";
echo $v['phone']." ";
echo $v['avatar']."<br>";
}
练习:
学子商城中每个用户的“收货地址列表”中都可能包含多个收货地址,而每个收货地址又包含编号、接收人姓名、地址、联系电话四个属性。
试创建一个收货地址列表变量(二维数组),其中包含三个收货地址。
使用for输出所有的收货地址信息;
使用foreach输出所有的收货地址信息。
3.函数 —— 了解
若上述代码需要反复使用,多次复制粘贴会导致今后的代码维护工作很麻烦!
getMax{
}
上述代码就是在创建一个“函数”!
定义:是一段预定义好,有名称的,并可以被反复使用的代码块,其中可以包含多条可执行语句。
语法: function 函数名(形式参数列表){
函数执行主体;
return 返回值;
}
调用: 函数名(实参列表);函数名(实参列表);
练习:使用函数封装“需要反复调用”的代码
编写一段代码,从0输出到9;
把上述代码封装为一个函数:pringNumber;
调用上述函数;再次调用上述函数;再次调用上述函数;
函数名中可以包含数字、字母、下划线,不能为数字开头。 若包含多个单词,可以使用下划线法则、或者大/小驼峰法则。
函数声明时,参数列表中可以声明0~N个参数,用逗号分隔。 函数可以声明一个返回值,把自己内部计算后的结果返回给函数的调用者: return
值;函数体内此句后面不能再有其它的语句了。
练习:使用函数封装“比较难以编写”的代码
编写一段代码,输出一个九九乘法表;
把上述代码封装为一个函数:print99
调用上述函数;再次调用上述函数;再次调用上述函数;
练习:创建一个函数计算两个整数的和
创建一个整型变量
创建一个整型变量
把上述四行代码封装为一个函数;
调用该函数。
练习:创建一个函数leiJia(),接收一个整数做参数
调用该函数,计算1到10的累加和;
调用该函数,计算1到100的累加和;
练习:创建一个函数:arrAdd,接收一个整型数的数组做参数,函数体内计算该数组中所有元素的和,返回该和。
调用该函数,实参为:[1, 3, 5],得到返回的结果并输出;
调用该函数,实参为:[2, 4, 6, 8],得到返回的结果并输出;
Improved:改进的,改良后的
4.使用PHP预定义的函数连接MySQL服务器
早期PHP提供了一套函数用于操作MySQL: mysql_xxx();
后来又提供了一套性能更加优秀的操作MySQL的函数库: mysqli_xxx();
使用MySQLi函数库连接MySQL服务器的步骤:
提示:操作过程与“命令行客户端连接MySQL服务器”过程是一样的。
(1)连接到MySQL服务器
$conn = mysqli_connect('服务器地址', '用户名', '密码', '数据库名', 端口号);
(2)向MySQL服务器发送SQL命令
$sql = "....";
$result = mysqli_query($conn, $sql);
(3)查看执行的结果
if($result===true){ //执行成功
}else { //执行失败
}
(4)断开到MySQL服务器的连接——可以省略
mysqli_close($conn);
课后练习:
(1)创建一个函数名为arrMax,接收一个数组做参数,函数体内查找出数组参数中的最大值,并返回该值。
调用上述函数,传递参数[10, 5, 30, 8],输出函数的返回值
(2)创建一个函数名为arrMin,接收一个数组做参数,函数体内查找出数组参数中的最小值,并返回该值。
调用上述函数,传递参数[10, 5, 30, 8],输出函数的返回值
(3)创建一个函数名为arrAvg,接收一个数组做参数,函数体内查找出数组参数中所有数值的平均值,并返回该值。
调用上述函数,传递参数[10, 5, 30, 8],输出函数的返回值
(4)创建一个SQL文件,其中编写如下的SQL语句:
删除并重建数据库:xuezi9,字符集使用UTF8;
创建表xz_user(uid, uname, upwd, email, phone)
(5)创建一个PHP文件,使用mysqli函数库中提供的mysqli_connect()函数连接到MySQL服务器,再使用mysqli_query()函数提交一条INSERT语句,向xz_user表中插入一条新的用户记录。
提示:上述操作由于涉及到数据库服务器和Web服务器,非常容易出错,需要慢慢的积累错误调试技巧。
下一篇: 第九天
推荐阅读
-
c语言:sizeof的使用,其不是函数,是一个操作符关键字,定义一个数组arr,输出arr和&arr的区别
-
JS基础研语法---函数基础总结---定义、作用、参数、返回值、arguments伪数组、作用域、预解析
-
Excel如何自定义一个函数以便快速使用这个函数组合
-
关于使用自定义函数对数组排序
-
第九天(数组,预定义数组,函数,使用数据库)
-
关于使用自定义函数对数组排序
-
关于使用自定义函数对数组排序,该如何处理
-
c语言:sizeof的使用,其不是函数,是一个操作符关键字,定义一个数组arr,输出arr和&arr的区别
-
php数组的foreach和for遍历循环,以及系统函数,自定义函数的使用,数组遍历的模板语法以及定界符单引号双引号的使用
-
JS基础研语法---函数基础总结---定义、作用、参数、返回值、arguments伪数组、作用域、预解析