DAY17 - 数组(循环遍历、多维数组、冒泡顺序)
9.1 数组的介绍
说明:一组(一堆)数据的集合,把多个数据进行组合,数组是由“元素”组成。
题:有6头牛,求牛的总体重和平均体重。
改进成数组的方式:
9.2 数组的创建
数组的三种创建方式
1.方式一:
变量 = array(元素的值,元素的值,元素的值,........);
2.方式二:
变量 = array(元素,元素,元素,..........);
3.方式三:
变量[【下标】] = 值;
变量[【下标】] = 值;
变量[【下标】] = 值;
.........
数组的细节
1.元素是由“下标”和“值”组成,也称为“键值对”;
2.下标就是每个数据值的对应名称,为什么有“下标”,原因每个数据有可以不一样(多个值)进行区分的作用。
3.下标可以自定义也可以让系统自动生成,如果是没有声明下标(没有自定义),这个时候下标为:0开始的依次递增的顺序的整数,如:0,1,2,3,4...
4.如果下标自定义了,就会按照自定义的下标来区分数据,没有下标的从0开始依次递增,
5.如果其中定义了一个数字,那么这个数组的后面的数据的下标都从定义的数字开始依次递增。
6.下标又称为“索引”和“键名”,index和offset
7.数值也称为“键值”,数值的数据类型为8种。
数组的覆盖
说明:如果后面的元素中的下标和前面元素的下标“重复”了,后面元素的值会覆盖前面的元素值。
数组的自增
说明:有一个固定的数组,这个时候需要在网数组中添加一个新的元素。
数组的分类
索引数组:下标都是数字,且连续的递增的方式。
关联数组:下标都是字符串的
混合数组:既有数字也有字符串
9.3 数组的使用
基本使用
获取到一个元素中的值;
写数组名(变量名)[下标]; //必须知道下标是什么,只能打印输出一个值
数组的遍历--遍历就是一个一个的自动获取
For循环遍历数组--只能遍历索引数组
Foreach循环变量数组--都可以遍历
基本语法:
Foreach(要遍历的数组 as $key=>$value){
$key就是每次循环获取数组中一个元素的下标
$value就是每次循环获取数组中的个元素的值
}
循环每次都是一个,获取完这个后数组的内部指针下移,一直到没有数组了给false
While+each+list循环遍历数组--都可以遍历
While循环如果有内容认为就是真,如果没有内容了就认为是假。
Each():从一个数组中获取一个“元素”再可以给另一个变量,这个时候的变量就是一个右“获取元素的”下标和值组成一个新的数组。获取完一个元素,那么这个数组中的指针进行下移。
组合成新数组为:当前数组的下标和值都是新数组中值,下标是系统(PHP)默认生成的两队(索引和关联),索引为:0和1,关联为:key和value,0和key获取的是原来数组的下标,1和value获取的是原来数组的值。
List()函数:
把数组中的值取出来给list中的变量,也就是说list中放变量,这个变量就可以获取数组的值;
List(变量名,变量名,变量名,............) = 数组;
循环遍历:
9.4 几个数组函数
Count():获取数组的长度
Is_array():检查某个变量是否是数组
Var_dump():打印输出数组中类型和长度和值
Print_r():打印输出数组中键值对
Implode():通过一个分隔符链接数组成为字符串
Explode():通过个分割符把一个字符串分割成数组
9.5 二维数组及多维数组
在弱类型语言中是没有具体的一个创建多维数组的函数或变量等,通过一维数组的创建方式来组合成二维或多维数组。
创建方式:一个数组的元素又是另一个数组,这个时候称为”二维数组“,如果一直往下的元素还是数组,这个时候称为”多维数组“.
创建方式一:
创建方式二:
创建方式三:
多维数组
多维数组的使用
1.获取一个值的方式:变量[第一维的下标][第二维的下标][.........]
2.循环遍历
9.6 排序算法
说明:排序就是对某组数据进行升序或降序的排列方式,排序都是对索引数组
冒泡排序
从大到小排列-从小到大排列
找到从最大的下标的值和前面的值进行比较,如果前面小于后面的值,进行位置交换,以此类推一直找当前的最大值,一次完成。继续找第二大下标的值进行比较,和它前面的值交换位置,以此类推,最终排序完成。
如:$arr = array(3,4,2,50,30);--从小到大的排序,2,3,4,30,50
选择排序
说明:从数组中选择一个数和其他进行比较,如果大于比较的数,任何交换位置。
选择:我们自己想象的一个数组为最大或最小