零起点php入门第14课-php数组(3)

Author: 陌小雨Date: 2016-09-19View: 76

这篇文章陌小雨继续和大家一起来学习php数组的相关操作。

一、数组元素的相关计算。

在使用数组的过程中很多时候需要对数组中的值进行求值运算。在之前的零起点php入门教程中,就使用了array_sum来计算数组中元素的和。除了计算和的函数外还提供了array_product函数来计算数组中元素的乘积。本篇文章我们就来介绍这两个系统函数。

array_sum函数用来计算数组中所有值的和,它的函数原型如下:

number array_sum ( array $array )

参数array即为要求和的数组。

注意:array_sum函数会将数字字符串转换为数值,将布尔值TRUE转换为1,而把其他不能转换为数值的通常转换为0来计算。

<?php
	$arr1=array(1,2,3,4,'5','05',TRUE);					//等价于 1+2+3+4+5+5+1=21
	$arr2=array(1,2,'ABC',3,'hello',4,'5','05',NULL);		//等价于 1+2+0+3+0+4+5+5+0=20
	echo '$arr1中元素值的和为:'.array_sum($arr1);		//求取数组$arr1中数值的和
	echo '<br />$arr2中元素值的和为:'.array_sum($arr2);	//求取数组$arr2中数值的和
?>

上述代码运行结果为:

$arr1中元素值的和为:21
$arr2中元素值的和为:20

array_product函数用来计算数组中所有值的乘积,它的函数原型如下:

number array_product ( array $array )

参数array即为要求乘积的数组。

注意:与array_sum函数类似的,array_product函数会将数字字符串转换为数值,将布尔值TRUE转换为1,而把其他不能转换为数值的通常转换为0来计算。因此对于含有不能转换为数值的元素的数组使用该函数是无实际意义的,因为任何值与0的乘积都为0。

<?php
	$arr1=array(3,4,5,6,'7',TRUE);		//等价于 3*4*5*6*7*1=2520
	$arr2=array(3,4,5,6,'7','hello');		//等价于 3*4*5*6*7*1*0=0
	echo '计算数组$arr1中元素的乘积为:'.array_product($arr1);		//对数组元素求乘积
	echo '<br />计算数组$arr2中元素的乘积为:'.array_product($arr2);		//对数组元素求乘积
?>

上述代码运行结果为:

计算数组$arr1中元素的乘积为:2520
计算数组$arr2中元素的乘积为:0

二、增加与删除数组元素

在PHP中,数组定义后,通常不是一成不变。在程序执行过程中,数组的元素可能被增加、删除和修改,这也是PHP的数组之所以非常强大的一个原因。下面就来详细介绍这些知识。

2.1、增加数组元素

在有些情况下,数组中的元素并不是在定义数组时候就可以确定的,通常会在程序运行时动态地向数组中增加元素。为数组添加元素的语法类似于赋值,如下所示:

数组名[索引] = 值

为数组增加元素需要使用未在数组中使用的索引或者不指定索引,不指定索引添加的数组索引同样由系统指定,指定规则为获取当前数组中最大整数索引值并在其基础上加1作为新元素的索引。

在接下来的示例中将用到rand函数,它用来生成随机数,函数原型如下:

int rand ([ int $min ], int $max )

参数min和max分别用来指定生成的随机数的最小和最大范围。

<?php
	$arr=array();		//定义一个数组,它没有任何元素
	echo '增加元素之前数组中元素的个数为:'.count($arr);		//输出数组个数
	for($i=0;$i<3;$i++)
		$arr[]=rand(0,99);		//使用for循环为数组循环添加3个元素,rand函数用啦产生随机数
	echo '<br />增加元素之后数组中的元素个数为:'.count($arr);
	echo '<br />输出数组的详细信息:<br />';
	print_r($arr);		//输出数组详细信息
	$arr[8]=100;		//为数组添加指定索引的元素
	for($i=0;$i<3;$i++)
		$arr[]=rand(0,99);		//使用for循环为数组循环添加3个元素,rand函数用啦产生随机数
	echo '<br />增加元素之后数组中的元素个数为:'.count($arr);
	echo '<br />输出数组的详细信息:<br />';
	print_r($arr);		//输出数组详细信息
?>

上述代码运行结果为(可能会有所差别,因为数组元素的值是随机的):

增加元素之前数组中元素的个数为:0
增加元素之后数组中的元素个数为:3
输出数组的详细信息:
Array ( [0] => 74 [1] => 78 [2] => 65 )
增加元素之后数组中的元素个数为:7
输出数组的详细信息:
Array ( [0] => 74 [1] => 78 [2] => 65 [8] => 100 [9] => 96 [10] => 50 [11] => 16 )

我们需要看到上述示例代码中指定索引和不指定索引的形式下元素索引的变化,当代码第9行为键指定为8的时候,第11行添加的元素的键就为会以8作为基础递增。

2.2、修改数组元素

修改数组中的元素只要访问到指定的元素,然后为其重新赋值即可,语法形式如下:

数组名[索引] = 值

<?php
	$arr=array(98,'hello',67,'A',85,NULL);		//定义一个数组
	echo '输出数组修改元素之前的详细信息:<br />';
	print_r($arr);		//输出数组修改之前的详细信息
	$arr[1]='Hi';		//修改数组的元素
	$arr[5]='good!';
	$arr[3]=100;
	echo '<br />输出数组修改元素之后的详细信息:<br />';
	print_r($arr);		//输出数组修改之前的详细信息
?>

上述代码运行结果为:

输出数组修改元素之前的详细信息:
Array ( [0] => 98 [1] => hello [2] => 67 [3] => A [4] => 85 [5] => )
输出数组修改元素之后的详细信息:
Array ( [0] => 98 [1] => Hi [2] => 67 [3] => 100 [4] => 85 [5] => good! )

2.3、删除数组元素

当数组中的元素不再需要的时候我们就可以删除它。同样的当整个数组不再需要的时候我们同样可以删除整个数组。完成这这些操作可以使用的函数是unset,它用来释放指定的变量,它的函数原型如下:

void unset ( mixed $var [, mixed $var [, $... ]] )

unset可以接受多个参数,参数var即为需要释放的变量,在本篇学习中我们用来释放数组中的元素和数组。

<?php
	$arr=array(98,'hello',67,'A',85,NULL);		//定义一个数组
	echo '删除元素之前数组中的元素个数为:'.count($arr);		//输出数组元素个数
	echo '<br />数组的详细信息为:<br />';
	print_r($arr);		//输出数组详细信息
	unset($arr[5]);		//删除索引为5的元素
	echo '<br />删除元素后前数组中的元素个数为:'.count($arr);		//输出数组元素个数
	echo '<br />数组的详细信息为:<br />';
	print_r($arr);		//输出数组信息
	unset($arr[1]);		//删除索引为1的元素
	echo '<br />删除元素后前数组中的元素个数为:'.count($arr);		//输出数组元素个数
	echo '<br />数组的详细信息为:<br />';
	print_r($arr);		//输出数组详细信息
	unset($arr);		//删除整个数组
	echo '<br />释放$arr变量后尝试输出数组信息:<br />';
	print_r($arr);		//尝试数组数组信息(运行会报错)
?>

上述代码运行结果为:

删除元素之前数组中的元素个数为:6
数组的详细信息为:
Array ( [0] => 98 [1] => hello [2] => 67 [3] => A [4] => 85 [5] => )
删除元素后前数组中的元素个数为:5
数组的详细信息为:
Array ( [0] => 98 [1] => hello [2] => 67 [3] => A [4] => 85 )
删除元素后前数组中的元素个数为:4
数组的详细信息为:
Array ( [0] => 98 [2] => 67 [3] => A [4] => 85 )
释放$arr变量后尝试输出数组信息:

Notice: Undefined variable: arr in D:\xampp\htdocs\yuan\05\5-13.php on line 16