首页 > 代码库 > 笨鸟学php(六) 数组

笨鸟学php(六) 数组

一、数组概述

1.1 数组是复合类型

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


二、数组的类型

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

<?php
	$user[0] = 1;
	$user[1] = "zhangsan";
	$user[2] = "aaa@bb.com";
	
	echo '<pre>';
	print_r($user);
	echo '</pre>';
?>

2.2 关联数组: 下标是字符串作为索引

<?php
	$user["id"] = 1;
	$user["name"] = "zhangsan";
	$user["email"] = "aaa@bb.com";
	
	echo '<pre>';
	print_r($user);
	echo '</pre>';
	$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 '<pre>';
	print_r($user1);
	echo '</pre>';
	
	/**
	 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 '<pre>';
	print_r($user2);
	echo '</pre>';
	
	/**
	 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 '<pre>';
	print_r($info);
	echo '</pre>';
	
	/**
	 	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语句循环遍历(不推荐)

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


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

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


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

      each() 函数:

      * 需要一个数组作为参数

      * 返回来的也是一个数组

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

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

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

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


      list() 函数:

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

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