笨鸟学php(六) 数组

一、数组概述

1.1 数组是复合类型

1.2 数组中可以存储任意长度的数据, 也可以存储任意类型的数据


二、数组的类型

2.1 索引数组: 下标是顺序整数作为索引

<?php	$user[0] = 1;	$user[1] = "zhangsan";	$user[2] = "aaa@bb.com";		echo '
';	print_r($user);	echo '
';?>
2.2 关联数组: 下标是字符串作为索引

<?php	$user["id"] = 1;	$user["name"] = "zhangsan";	$user["email"] = "aaa@bb.com";		echo '
';	print_r($user);	echo '
'; $user["name"] = "lisi"; echo $user["name"];?>

三、数组的多种声明方式

3.1 直接为数组元素赋值

a. 如果索引下标不给值,就会从0开始顺序索引
b. 如果给出索引下标,下一个就会是从最大的开始增1

c. 如果后面出现前面的下标,如果是赋值就是为前面的元素重新赋值
d. 混合声明时,索引和关联不互相影响(不影响索引下标的声明)


3.2 使用array()函数

a. 默认是索引数组

b. 如果为关联数组和索引数组指定下标,使用 键=>值
c. 多个成员之前使用“,”分割

<?php	$user1 = array (1, "zhsangsan", 10, "nan", "aaa@bbb.com");	echo '
';	print_r($user1);	echo '
'; /** Array( [0] => 1 [1] => zhsangsan [2] => 10 [3] => nan [4] => aaa@bbb.com ) */ $user2 = array("id"=>1, "name"=>"zhsangsan", "age"=>10, 100=>"nan", "aaa@bbb.com"); echo '
';	print_r($user2);	echo '
'; /** Array( [id] => 1 [name] => zhsangsan [age] => 10 [100] => nan [101] => aaa@bbb.com ) */?>

重要知识点: 二维数组

<?php	$info=array(		"user"=>array(				array(1, "zansan", 10, "nan"),				array(2, "lisi", 20, "nv")		 )	);	echo $info["user"][1][1]; // lisi	echo '
';	print_r($info);	echo '
'; /** Array ( [user] => Array ( [0] => Array ( [0] => 1 [1] => zansan [2] => 10 [3] => nan ) [1] => Array ( [0] => 2 [1] => lisi [2] => 20 [3] => nv ) ) ) */?>

四、数组的遍历

4.1 使用for语句循环遍历(不推荐)

局限性: 数组必须是索引数组, 而且下标必须是连续的 (然而索引数组下标可以不连续, 数组还可能是关联数组)

<?php  	$user = array(1, "zhasna", "aaa@bb.com");	for($i = 0; $i < count($user); $i++){		echo "\$user[{$i}]=".$user[$i]."
"; } /** $user[0]=1 $user[1]=zhasna $user[2]=aaa@bb.com */?>

4.2 使用foreach语句循环遍历(强烈推荐)

循环次数由数组的元素个数决定, 每一次循环都会将数组中的元素分别赋值给后面的变量

<?php    $user=array(1, "name"=>"zhasna", "age"=>40, 100=>"nan", "aaa@bb.com");    foreach($user as $key => $val){   // $var 是自定义变量, $key自定义变量  		echo $key." =====> ".$val."
"; } /* 0 =====> 1 name =====> zhasna age =====> 40 100 =====> nan 101 =====> aaa@bb.com */ foreach($user as $val){ // 不要key也可以, 直接遍历$user的值 echo $val."
"; } /* 1 zhasna 40 nan aaa@bb.com */?>

4.3 使用while(), list(), each() 组合循环遍历(不推荐)

each() 函数:

* 需要一个数组作为参数

* 返回来的也是一个数组

* 返回来的数组时0, 1, key, value四个下标, 0和key下标是当前数组元素的键, 1和value下标是当前数组元素的值

* 默认当前元素就是第一个元素

* 每执行一次后就会将当前元素向后移动

* 如果已经到了最后还执行这个函数, 则返回false

<?php	$user = array("id"=>1, "name"=>"zhangsan", "age"=>10, "sex"=>"nan");		while($arr = each($user)){		// echo $arr[0]."==>".$arr[1]."
"; echo $arr["key"]." ----> ".$arr["value"]."
"; } /** id ----> 1 name ----> zhangsan age ----> 10 sex ----> nan */?>

list() 函数:

* list()=array(); 需要将一个数组赋值给这个函数

* 数组中的元素个数要和list()函数中的参数个数相同
* 数组中的每个元素值会赋值给list()函数中的每个参数,list()将每个参数转为变量

* list()只能接收索引数组

<?php	list($name, $age, $sex) = array("zansan", 10, "nnnnn");	echo $name."
"; echo $age."
"; // list中的值和数组中的值一一对应 echo $sex."
"; // 如果不想给name赋值, 那就写成list(, $age, $sex) /* zansan 10 nnnnn */ $user1 = array("id"=>1, "name"=>"zhangsan", "age"=>10, "sex"=>"nan"); list($key, $value) = each($user1); // Array ( [1] => 1 [0] => id ) echo $key." --> ".$value; /* id --> 1 */ $user2 = array("id"=>1, "name"=>"zhangsan", "age"=>10, "sex"=>"nan"); while(list($key, $value) = each($user2)){ echo $key." ==> ".$value."
"; } /* name ==> zhangsan age ==> 10 sex ==> nan */?>









郑重声明:本文版权包含图片归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们(delete@yzlfxy.com)修改或删除,多谢。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

留言与评论(共有 0 条评论)
昵称:
匿名发表
   
验证码: