欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-06-08 17:41:16
...

复习:

掌握新语言的步骤:

(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服务器,非常容易出错,需要慢慢的积累错误调试技巧。