第九天(数组,预定义数组,函数,使用数据库)

来源:互联网 发布:寻侠乐理突破数据 编辑:程序博客网 时间:2024/05/20 23:34

复习:

掌握新语言的步骤:

(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( askey=>value)echo$key.$value;foreach(数组名 as value ){  
            echo
value;
}
含义:依次把数组中的每一对下标=>值,赋值为指定的两个变量,执行一遍循环体。
提示: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']."&nbsp;";    echo $u['uname']."&nbsp;";    echo $u['phone']."&nbsp;";    echo $u['avatar']."<br>";}echo "<hr>";foreach($userList as $v){    //遍历大数组中的每个用户    echo $v['uid']."&nbsp;";    echo $v['uname']."&nbsp;";    echo $v['phone']."&nbsp;";    echo $v['avatar']."<br>";}

练习:
学子商城中每个用户的“收货地址列表”中都可能包含多个收货地址,而每个收货地址又包含编号、接收人姓名、地址、联系电话四个属性。
试创建一个收货地址列表变量(二维数组),其中包含三个收货地址。
使用for输出所有的收货地址信息;
使用foreach输出所有的收货地址信息。

3.函数 —— 了解

num1=10;num2 = 20;
max=num1>num2?num1 : num2;echomax;
若上述代码需要反复使用,多次复制粘贴会导致今后的代码维护工作很麻烦!
getMax{
num1=10;num2 = 20;
max=num1>num2?num1 : num2;echomax;
}
上述代码就是在创建一个“函数”!
定义:是一段预定义好,有名称的,并可以被反复使用的代码块,其中可以包含多条可执行语句。
语法: function 函数名(形式参数列表){
函数执行主体;
return 返回值;
}
调用: 函数名(实参列表);函数名(实参列表);
练习:使用函数封装“需要反复调用”的代码
编写一段代码,从0输出到9;
把上述代码封装为一个函数:pringNumber;
调用上述函数;再次调用上述函数;再次调用上述函数;

函数名中可以包含数字、字母、下划线,不能为数字开头。 若包含多个单词,可以使用下划线法则、或者大/小驼峰法则。
函数声明时,参数列表中可以声明0~N个参数,用逗号分隔。 函数可以声明一个返回值,把自己内部计算后的结果返回给函数的调用者: return
值;函数体内此句后面不能再有其它的语句了。

练习:使用函数封装“比较难以编写”的代码
编写一段代码,输出一个九九乘法表;
把上述代码封装为一个函数:print99
调用上述函数;再次调用上述函数;再次调用上述函数;

练习:创建一个函数计算两个整数的和
创建一个整型变量num110num2,值为20;
创建一个整型变量sumnum1和num2sum的值;
把上述四行代码封装为一个函数;
调用该函数。
练习:创建一个函数leiJia(),接收一个整数做参数n1+2+3+...n的累加和,输出该和。
调用该函数,计算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服务器,非常容易出错,需要慢慢的积累错误调试技巧。