数组就是一组数据的集合,把一系列数据组织起来,形成一个可操作的整体。数组的每个实体都包含两项:key和value,键和值。

一、什么是数组

数组就是一组数据的集合,把一系列数据组织起来,形成一个可操作的整体。数组的每个实体都包含两项:键和值。

 

二、声明数据

在PHP中声明数组的方式主要有两种:

一是应用array()函数声明数组

一是直接为数组元素赋值

方式1:array()函数声明的数组

格式:

array([mixed...])  参数mixed的语法为key=>value

示例:

<?php
	$array=array("1"=>"编","2"=>"程","3"=>"词","4"=>"典");
	print_r($array);
	echo "<br>";
	echo $array[1];   // 注意:下标默认是从0开始 
	echo $array[2]; 
	echo $array[3]; 
	echo $array[4]; 
?>

 

方式2:直接为数组元素赋值

如果在创建数组时不知所创建数组的大小,或在实际编写程序时数组的大小可能发生变化,采用这种数组创建的方法较好。

示例:

<?php
	$array[1]="I";
	$array[2]="love";
	$array[3]="PHP";
	print_r($array);   // 输出所创建数组的结构
?>

 

三、数组的类型

PHP支持两种数组

索引数组(indexed array)和联合数组(associative array)

前者使用数字作为键,后者使用字符串作为键。

 

四、输出数组

在PHP中对数组元素输出,可以通过echoprint语句来实现,但这只能对数组中某一元素进行输出;

要将数组结构输出则要使用print_r()函数,其语法:

print_r(mixed expression)

参数expression为普通的整形、字符型或实型变量则输出该变量本身,如果该参数为数组,则按一定键值和元素的顺序显示出该数组中的所有元素。

 

五、数组的构造

一维数组:
当一个数组的元素是变量时,则称其为一维数组。

一维数组格式: 类型说明符 数组名[常量表达式]

二维数组:

当一个数组的元素是一个一维数组时,则称之为二维数组。

示例:

<?php
	$str = array (
	"网络编程语言"=>array ("PHP","JSP","ASP"),
	"体育项目"=>array ("m"=>"足球","n"=>"篮球")); 
	print_r ( $str) ;
?>

 

六、遍历数组

遍历数组中的所有元素是常用的一种操作,在遍历的过程中可以完成查询或其他功能。在PHP中遍历数组的方法有多种,下面介绍最常用的两种方法。

1) 使用foreach结构遍历数组;

2) 使用list()函数遍历数组,list()函数仅能用于数字索引的数组,且数字索引从0开始

示例:综合使用list()和each()认证用户登录

<?php
	// 输出用户登录信息
	while(list($name,$value)=each($_POST)){
      if($name!="submit") {
            echo "$name=$value<br>";
      }
	}
?>

 

七、统计数组元素个数

在PHP中,使用count()函数对数组中的元素个数进行统计,语法为:

int coun( mixed array[,int mode] )

其中参数array为必要参数,mode为可选参数,若选中COUNT——RECURSIVE(或1),本函数将递归地对数组数组。

示例:

<?php
	$mimvp_array = array("blog"=>array(	"blog.mimvp.com", "blog.ithomer.net", "blog.mimvp.net"),
						"forum"=>array("forum.mimvp.com"),
						"proxy"=>array("proxy.mimvp.com"));

	echo print_r($mimvp_array, True);
	echo "<br/>";

	$mimvp_array_count = count( $mimvp_array );
	echo "mimvp_array_count: " . $mimvp_array_count . "<br/>";

	$mimvp_array_count2 = count( $mimvp_array, COUNT_RECURSIVE );
	echo "mimvp_array_count2: " . $mimvp_array_count2 . "<br/>";
?>

运行结果:

Array ( [blog] => Array ( [0] => blog.mimvp.com [1] => blog.ithomer.net [2] => blog.mimvp.net ) [forum] => Array ( [0] => forum.mimvp.com ) [proxy] => Array ( [0] => proxy.mimvp.com ) ) 
mimvp_array_count:
3
mimvp_array_count2: 8

 

八、数组排序

1) 使用sort()和rsort()分别对数组进行升序和降序

示例:

<?php
	$sort_array = array(15, 6, 37, 18, 99, 42, 48, 9);

	echo "=== sort === <br/>";
	$sort_array_2 = sort($sort_array);// return 1
	echo "sort_array_2 : " . $sort_array_2 . "<br/>";
	for($i=0; $i<count($sort_array); $i++) {
	    echo $sort_array[$i] . " ";
	}
	echo "<br/><br/>";

	echo "=== rsort === <br/>";
	$sort_array_3 = rsort($sort_array);// return 1
	echo "sort_array_3 : " . $sort_array_3 . "<br/>";
	for($i=0; $i<count($sort_array); $i++) {
	    echo $sort_array[$i] . " ";
	}
?>

运行结果:

=== sort === 
sort_array_2 : 1

6 9 15 18 37 42 48 99 

=== rsort === 
sort_array_3 : 1

99 48 42 37 18 15 9 6

 

2) 使用ksort()和asort()对关联数组排序

如果使用了相关数组,在排序后还要保持关键字和值的排序一致,这是就需要使用ksort()和asort()函
数。

ksort() 键升序排序,krsort() 键降序排序

asort() 值升序排序,arsort() 值降排序

示例: 

<?php
	$sort_array = array('blog'=>2013, 'apptop'=>2016, 'proxy'=>2015, 'forum'=>2013);

	echo "=== ksort === <br/>";
	$sort_array_2 = ksort($sort_array);    // krsort  asc
	echo "sort_array_2 : " . $sort_array_2 . "<br/>";
	print_r($sort_array);
	echo "<br/>";

	$sort_array_2 = krsort($sort_array);// krsort  desc
	echo "sort_array_2 : " . $sort_array_2 . "<br/>";
	print_r($sort_array);
	echo "<br/><br/>";

	echo "=== asort === <br/>";
	$sort_array_3 = asort($sort_array);    // asort  asc
	echo "sort_array_3 : " . $sort_array_3 . "<br/>";
	print_r($sort_array);
	echo "<br/>";

	$sort_array_3 = arsort($sort_array);// asort  desc
	echo "sort_array_3 : " . $sort_array_3 . "<br/>";
	print_r($sort_array);
?>

运行结果:

=== ksort === 
sort_array_2 : 1
Array ( [apptop] => 2016 [blog] => 2013 [forum] => 2013 [proxy] => 2015 ) 
sort_array_2 : 1
Array ( [proxy] => 2015 [forum] => 2013 [blog] => 2013 [apptop] => 2016 ) 

=== asort === 
sort_array_3 : 1
Array ( [blog] => 2013 [forum] => 2013 [proxy] => 2015 [apptop] => 2016 ) 
sort_array_3 : 1
Array ( [apptop] => 2016 [proxy] => 2015 [forum] => 2013 [blog] => 2013 )

 

3) 自定义排序uksort()和uasort()对关联数组排序

uksort()  自定义健排序,升序和降序由自定义的 arr_cmp 决定

uasort()  自定义值排序,升序和降序由自定义的 arr_cmp 决定

代码示例:

function arr_cmp($a, $b){
	if($a == $b) return 0;
	return ($a > $b) ? 1 : -1;
}

function test_array_4(){
	$sort_array = array('blog'=>2013, 'apptop'=>2016, 'proxy'=>2015, 'forum'=>2013);

	echo "=== uksort === <br/>";
	$sort_array_2 = uksort($sort_array, "arr_cmp");
	echo "sort_array_2 : " . $sort_array_2 . "<br/>";
	foreach ($sort_array as $key => $value)
		echo "$key => $value" . " ";
	echo "<br/><br/>";

	echo "=== uasort === <br/>";
	$sort_array_2 = uasort($sort_array, "arr_cmp");
	echo "sort_array_2 : " . $sort_array_2 . "<br/>";
	foreach ($sort_array as $key => $value)
		echo "$key => $value" . " ";
}

运行结果:

=== uksort === 
sort_array_2 : 1

apptop => 2016 blog => 2013 forum => 2013 proxy => 2015 

=== uasort === 
sort_array_2 : 1
forum => 2013 blog => 2013 proxy => 2015 apptop => 2016

 

 

参考推荐

PHP 数组使用技巧

PHP 字符串函数总结

PHP 判断字符串包含

PHP 判断数字,字母,特殊符号,中文

php 常用函数总结(数组,字符串,时间,文件操作)

PHP 输出字符串(echo,print,printf,sprinf,print_r,var_dump)

PHP 数据类型转换