首页 > 技术文章 > 数组加强

zhony 2018-12-25 16:08 原文

数组的概念

概念:数组的本质是存储、管理和操作一组变量属于复合类型的一种。

键值对的概念: $arr = array('id'=>1,'name'=>'duke','sex'=>'妖');

每个数组可以有多个值,多个值之间用逗号隔开,每个逗号内的数据我们称为一个单元,每个单元都 是有键(下标)=>值 ,也就是键值对组成,如果不写下标(键)默认会使用整数作为下标,每个单元的值 必须有下标通过下标来定位每个值在数组中的位置,每个单元只能有一种类型的下标。索引(整数)或 者关联(字符串)

数组的声明方式

使用array()数组方式的声明:

 

 1  //使用array();
 2  //1.索引数组
 3  $arr = array(1,'帅的B哥',18,'男神','182cm','180kg');
 4  //不给出下标默认索引下标
 5  var_dump($arr);
 6  //2.关联数组
 7  $arr1 = array('id'=>2,'name'=>'laowang','zhiye'=>'省港澳第一
 8 ADC','age'=>'30');
 9  var_dump($arr1);
10  //3.混合数组
11  $arr2 = array('id'=>3,'鹏鹏','sex'=>'雌雄同体','age'=>28,'zhiye'=>'阿偶度
12 鸭王');
13  var_dump($arr2);

使用[]数组方式声明(5.6版本以上才能使用):

//使⽤array[];
 //1.索引数组
 $arr = [1,'帅的B哥',18,'男神','182cm','180kg'];
 //不给出下标默认索引下标
 var_dump($arr);
 //2.关联数组
 $arr1 = ['id'=>2,'name'=>'laowang','zhiye'=>'省港澳第⼀ADC','age'=>'30'];
 var_dump($arr1);
 //3.混合数组
 $arr2 = ['id'=>3,'鹏鹏','sex'=>'雌雄同体','age'=>28,'zhiye'=>'沈阳第鸭
王'];
 var_dump($arr2);

直接赋值法声明数组:

 1 //直接赋值法声明数组
 2 //1.索引数组
 3 $arr[]=1;
 4 $arr[]='李哥';
 5 $arr[]='受';
 6 $arr[]=33;
 7 var_dump($arr);
 8 //直接赋值法如果声明的时候不指定下标 默认从0开始分配索引下标
 9 $arr1[2]=1;
10 $arr1[10]='夫';
11 $arr1[5]='h';
12 $arr1[2]='www.mmp.com';
13 $arr1[]=57;
14 var_dump($arr1);
15 //如果给出索引下标 下一个下标就会从最大的开始每次增加1
16 //如果后面出现前面的下标 就会覆盖前面的赋值
17 //2.关联数组
18 $arr2['id']=1;
19 $arr2['name']='澳洲⻋神';
20 $arr2['sex']='⼥';
21 $arr2['age']=16;
22 $arr2['phone']='18676579765';
23 $arr2['url']='www.dushen.com';
24 var_dump($arr2);
25 //3.混合数组
26 $arr3[]=1;
27 $arr3[10]='天津聚集地';
28 $arr3['sex']='男';
29 $arr3[4]=99;
30 $arr3[]='www.chuanxiao.com';
31 var_dump($arr3);
32 //混合数组中索引序列不会被关联下标影响

读取数组的值

1 $arr1 = ['id'=>2,'name'=>'laowang','zhiye'=>'省港澳第ADC','age'=>'30'];
2  var_dump($arr1);
3  echo $arr1['id'];
4  echo $arr1['name'];
5  echo $arr1['zhiye'];

通过变量+[下标]的方法或者某个数组准备的值。

注意:读取准备的某个元素,可以使用 echo ,

因为echo可以输出单个特殊类型的值。 如果要输出整个数组,要知道print_r或者var_dump来打印。

数组的增删改查

 1 <?php
 2  $arr =
 3 array('a'=>'test1','b'=>'test2','c'=>'test3','d'=>'test4','e'=>'test5');
 4  var_dump($arr);
 5  //添加方法1:
 6  //$arr[] = '星星';
 7 
 8  //添加方法2
 9  //$arr['h'] = '猩猩';
10 
11  //修改元素
12  //$arr['h'] = '猩不好惹';
13  //删除数组元素
14  //unset($arr['f']);
15  //unset($arr['d']);
16 
17  //删除数组
18  //unset($arr);
19  //清空数组
20  $arr = array();
21  var_dump($arr);

数组的遍历

数组的分类

(1)一维数组

  1 数组内部再也没有数组元素

 

(2)二维数组

 

  1 数组内还有数组单元 

(3)多维数组

  1 数组内还有数组单元 数组单元里面还有数组单元 一层一层的嵌套

 1 //⼀维数组
 2 
 3  $arr = array('为什么我这么帅,因为我每天都用大宝SOD蜜');
 4  var_dump($arr[0]);
 5  //⼆维数组
 6  $arr2 = array(
 7  1=>array('id'=>1,'name'=>'张三'),
 8  2=>array('id'=>2,'name'=>'张四'),
 9  3=>array('id'=>3,'name'=>'王⼆'),
10  4=>array('id'=>4,'name'=>'王三'),
11  5=>array('id'=>5,'name'=>'王炸'),
12  6=>array('id'=>6,'name'=>'王鳖'),
13  );
14  var_dump($arr2[6]['name']);
15  //多维数组
16 
17  $arr3 = array(
18  1=>array(
19  1=>array('id'=>1,'name'=>'路','副业'),
20  ),
21  2=>array(
22  2=>array('id'=>2,'name'=>'68','副业'),
23  ),
24  3=>array(
25  3=>array('id'=>3,'name'=>'87','副业'),
26  ),
27  );
28  var_dump($arr3);

 数组的遍历

数组的遍历: 使用一种特定的规则来逐个读取数组中的键和值

方式1:使用for循环

1 $arr = array('a','b','c','d','e');
2 echo $arr[0],'<br >';
3 echo $arr[1],'<br >';
4 echo $arr[2],'<br >';
5 echo $arr[3],'<br >';
6 echo $arr[4],'<br >';
7 for($i=0;$i<count($arr);$i++) {
8  echo $arr[$i],'<br >';
9 }

注意:for语句只能遍历索引数组,并且下标是连续且要注意不能遍历关联数组。

方式2:使用foreach遍历数组(专业遍历数组)

1)只遍历值

1 foreach(要遍历的数组变量 as 值){
2  循环体;
3 }

2)遍历键和值

1 foreach(要遍历的数组 as 键=>值){
2  循环体;
3 }

 

注意: [Math Processing Error]value变量名不是固定不变,他是可以是使用任意字符,foreach是
有循环功能

 1 遍历一维数组
 2 
 3 1 <?php
 4 2  //$arr = array(1=>1,2,3,4,20=>5,6,7,8,9,0);
 5 3  $arr = array('id'=>1,'name'=>'萝哥','zhiye'=>'萝');
 6 var_dump($arr);
 7  //只遍历值
 8  foreach($arr as $val){
 9  echo $val.'<br/>';
10  }//遍历键和值
11  foreach($arr as $key=>$value){
12  echo '键:'.$key.'------>值:'.$value.'<br/>';

遍历二维数组

1 //推荐使⽤下⾯的⽅式进⾏数组遍历⼆维数组遍历(注意 重点内容 请记住)
2  foreach($arr as $key=>$value){
3  // var_dump($value);
4  //二维数组取值一边我们都使用键值对方式取值
5 echo $value['name'].'<br/>';
6  echo $value['age'].'<br/>';
7  echo $value['sex'].'<br/>';

while list each遍历数组

1 list(),可以将⼀组索引数组单元逐个赋值给⼀组变量,把每个值赋值给list内的变量,⽽且只能是索引
2 数组,索引数组必须是从0开始。
3 each(),每次访问⼀个数组单元并且将指针下移到下⼀个将要访问的数组单元中将访问出来的数组单
4 元以混合数组的形式返回,当达到数组单元最后没有的时候返回false

 

推荐阅读