^ 回到顶部
  • 人生没有定律,每个人都有自己的节奏
  • 本站wordpress建站教程均通过实践后发布,希望对你有帮助,如果有代码出错,请联系站长解决
  • 希望你的坚持,都是因为热爱,而不是因为不甘心
  • 8年wordpress建站经验,5星服务品质
  • 那些不愿意让你吃亏的人,才是真正值得你深交的人,也是值得你付出时间的人
  • 腾讯云3年2核2G新品轻量限时特惠只需408元

零起点php入门第13课-php数组(2)

零起点 php 入门教程陌小雨博客很久没有更新了,一个人作战确实很辛苦,又要搜集资料、又要测试、保证把实用、可用的分享给大家,让大家学的时候不至于突然卡到一个小问题就一头雾水,所以虽然慢点,还是要保证质量吧,忘大家理解。

这是零起点 php 入门第 13 课,这节课我们来讲讲 php 数组的常用操作。主要包括遍历、比较、合并、分割、排序和过滤数组元素。在学习这些知识之前我们首先需要认识三个函数 count、print_r 和 var_dump,他们的原型如下所示:

2 核 2G 限时特惠 396 元/3 年    宝塔建站 10850 大礼包

int count ( mixed $var [, int $mode ] )	
bool print_r ( mixed $expression [, bool $return ] )
void var_dump ( mixed $expression [, mixed $expression [, $... ]] )

函数说明:
count 函数用来计算数组中元素的个数或者对象中属性的个数,这里我们只用来计算数组元素的个数。
print_r 函数用来打印变量的详细信息。
var_dump 函数用来打印一个或多个表达式的结构信息,包括表达式的类型与值。

1、for 循环遍历数组

遍历数组即依次对数组中的每个元素进行访问且仅访问一次。我们知道默认数组的索引值是从 0 开始递增的,而且可以将变量作为索引来访问数组的元素。因此,我们完全可以使用循环递增一个作为索引的变量来遍历一个数组。

<?php
	$arr=array(63,'abc',45,'hello',3,7,9,'DEF');		//定义一个索引数组
	echo '在数组$arr 中:<br />';
	for($i=0;$i<count($arr);$i++){		//将循环控制变量作为访问数组的下标
		echo "第{$i}个元素:{$arr[$i]}<br />";		//输出数组元素
	}
?>

2、合并数组

合并数组即为将两个或者多个数组合并为一个数组。合并数组有对应的运算符和多个函数可以完成,他们的区别就在于使用不同的规则对数组进行合并。

2.1、使用联合运算符合并数组

PHP 中有专门的数组运算符,用来合并数组的运算符称为联合运算符,它的符号与加法的符号相同。使用的形式如下:

$arr = $arr1 + $arr2

它会将右操作数中与左操作数中相同索引的元素去除后将剩余元素加在左操作数后而不会发生覆盖。

<?php
	$arr1=array('a','b','c');		//定义一个数组
	echo '数组$arr1 的信息:<br />';
	print_r($arr1);		//输出数组信息
	$arr2=array('d','e','f','g');		//定义一个数组
	echo '<br />数组$arr2 的信息:<br />';
	print_r($arr2);		//输出数组信息
	$arr=$arr1+$arr2;		//联合数组
	echo '<br />联合后的数组$arr 的信息:<br />';
	print_r($arr);		//输出联合后的数组信息
?>

上面代码运行结果为:

数组$arr1 的信息:
Array ( [0] => a [1] => b [2] => c )
数组$arr2 的信息:
Array ( [0] => d [1] => e [2] => f [3] => g )
联合后的数组$arr 的信息:
Array ( [0] => a [1] => b [2] => c [3] => g )

2.2、使用系统函数合并数组

基本的合并数组函数是 array_merge 函数,它可以将一个或者多个数组合并起来,将后一个数组的元素加在前一个数组的末尾。它的函数原型如下:

array array_merge ( array $array1 [, array $array2 [, array $... ]] )

参数 array1、array2…为将要合并的数组,该函数的特点是可以一次合并多个数组。

<?php
	$arr1=array('a','b','c');		//定义一个数组
	echo '数组$arr1 的信息:<br />';
	print_r($arr1);		//输出数组信息
	$arr2=array('d','e','f','g');		//定义一个数组
	echo '<br />数组$arr2 的信息:<br />';
	print_r($arr2);		//输出数组信息
	$arr3=array('e','g','h');		//定义一个数组
	echo '<br />数组$arr3 的信息:<br />';
	print_r($arr3);		//输出数组信息
	$arr=array_merge($arr1,$arr2);		//合并 2 个数组
	echo '<br />合并$arr1 和$arr2 后的数组$arr 信息:<br />';
	print_r($arr);		//输出联合后的数组信息
	$arr=array_merge($arr1,$arr2,$arr3);		//合并 3 个数组
	echo '<br />合并$arr1、$arr2 和$arr3 后的数组$arr 信息:<br />';
	print_r($arr);		//输出联合后的数组信息
?>

上面代码运行结果为:

数组$arr1 的信息:
Array ( [0] => a [1] => b [2] => c )
数组$arr2 的信息:
Array ( [0] => d [1] => e [2] => f [3] => g )
数组$arr3 的信息:
Array ( [0] => e [1] => g [2] => h )
合并$arr1 和$arr2 后的数组$arr 信息:
Array ( [0] => a [1] => b [2] => c [3] => d [4] => e [5] => f [6] => g )
合并$arr1、$arr2 和$arr3 后的数组$arr 信息:
Array ( [0] => a [1] => b [2] => c [3] => d [4] => e [5] => f [6] => g [7] => e [8] => g [9] => h )

3、获取数组的交集和差集

获取数组的交集即为获取指定数组与其他数组中相同的元素;获取数组的差集即为获取指定数组与其他数组中不同的元素。在 PHP 中提供了获取交集和差集的多个函数,这里只讲解最主要的两个,他们的函数原型如下:

array array_intersect ( array $array1 , array $array2 [, array $ ... ] )  //获取数组的交集

array array_diff ( array $array1 , array $array2 [, array $ ... ] )  //获取数组的差集

这两个函数均可接受多个参数,而且均会返回函数中参数 array1 与其他数组的交集(差集)。这里我们也可借用数学中的题目来学习这个函数。

例如有两个数组$arr1 和$arr2 用来保存两组参加知识竞赛学生的学号。前提是一个学生可以参加多项竞赛,那么我们就可以用以上函数来取得两项竞赛都参加的学生(交集),同样也可以取得一组中只参加一项竞赛的学生。

<?php
	$arr1=array(1,3,4,5,34,78,99);		//参加第一项竞赛的学生学号数组
	$arr2=array(5,6,7,3,56,34,8,9);		//参加第二项竞赛的学生学号数组
	$arr=array_intersect($arr1,$arr2);		//获取两个数组的交集
	echo '两项竞赛均参加的学生学号有:<br />';
	print_r($arr);		//输出数组的详细信息
	$arr=array_diff($arr1,$arr2);		//获取相对数组$arr1 的差集
	echo '<br />$arr1 中只参加一项竞赛的学生学号有:<br />';
	print_r($arr);		//输出数组的详细信息
	$arr=array_diff($arr2,$arr1);		//获取相对数组$arr2 的差集
	echo '<br />$arr2 中只参加一项竞赛的学生学号有:<br />';
	print_r($arr);		//输出数组的详细信息
?>

上面代码运行结果为:

两项竞赛均参加的学生学号有:
Array ( [1] => 3 [3] => 5 [4] => 34 )
$arr1 中只参加一项竞赛的学生学号有:
Array ( [0] => 1 [2] => 4 [5] => 78 [6] => 99 )
$arr2 中只参加一项竞赛的学生学号有:
Array ( [1] => 6 [2] => 7 [4] => 56 [6] => 8 [7] => 9 )

与数学中只能获取数值的交集与差集不同的是,PHP 中可以使用以上两个函数来获取其他类型元素的交集和差集。

<?php
	$arr1=array('A','B','C','D','E');		//定义两个数组
	$arr2=array(1,'A',2,'B',3,'C');
	$arr=array_intersect($arr1,$arr2);		//获取数组的交集
	echo '数组$arr1 和数组$arr2 的交集是:<br />';
	print_r($arr);
	$arr=array_diff($arr1,$arr2);		//获取$arr1 与$arr2 的差集
	echo '<br />数组$arr1 和数组$arr2 的差集是:<br />';
	print_r($arr);
	$arr=array_diff($arr2,$arr1);		//获取$arr2 与$arr1 的差集
	echo '<br />数组$arr2 和数组$arr1 的差集是:<br />';
	print_r($arr);
?>

上面代码运行结果为:

数组$arr1 和数组$arr2 的交集是:
Array ( [0] => A [1] => B [2] => C )
数组$arr1 和数组$arr2 的差集是:
Array ( [3] => D [4] => E )
数组$arr2 和数组$arr1 的差集是:
Array ( [0] => 1 [2] => 2 [4] => 3 )

使用 array_intersect 函数和 array_diff 函数获取多个数组的交集和差集的使用与获取两个数组的交集和差集类似,这里陌小雨就不再详细讲解。

赠人玫瑰,手有余香。