PHP常用数组函数
PHP有很多数组函数,最近工作用到了一些数组函数,今天就来温习一遍这些常用的数组函数。重新梳理一遍这些函数的功能、使用方法、相互之间的关联,增加对它们的认识。
相关函数介绍来自手册,主要是对函数的使用方法进行温习,感兴趣的小伙伴可以自己针对某个函数多看手册里的介绍和一些使用案例。
1、array_push()
函数说明:
将 array 当成一个栈,并将传入的变量压入 array 的末尾。array 的长度将根据入栈变量的数目增加。
Note: 如果用array_push() 来给数组增加一个单元,还不如用 $array[] = ,因为这样没有调用函数的额外负担。
Note: 如果第一个参数不是数组,array_push() 将发出一条警告。这和 $var[] 的行为不同,后者会新建一个数组。
返回处理之后数组的元素个数。
代码:
// array_push(array, var)
$arr = ['a','b','c'];
echo array_push($arr,'d','f');//返回 5 返回新数组之后的长度
print_r($arr); //返回 Array ( [0] => a [1] => b [2] => c [3] => d [4] => f )
学习总结:
这个函数可以往一个数组的末尾插入一个或多个元素,并且返回新数组的长度。如果是插入一个元素建议直接使用$array[] =的方式,可以省去调用函数的负担。
这个函数也可以将另外一个数组添加一个数组的末尾,不过是整个数组添加到数组中,与array_merge()合并不同array_merge()是将几个数组合并成一个新的数组。
2、array_pop()
函数说明:
弹出并返回 array 数组的最后一个单元,并将数组 array 的长度减一。
返回 array 的最后一个值。如果 array 是空(如果不是一个数组),将会返回 NULL 。
代码:
//array_pop(array)
$arr = ['a','b','c'];
echo array_pop($arr);//返回c
print_r($arr); //返回 Array ( [0] => a [1] => b )
学习总结:
这个函数可以将数组末尾的一个元素删除,并返回这个值且时数组长度减一。
array_pop()可以和array_push()一起记忆,一个向末尾添加元素,一个在末尾删除元素。
一个返回新数组的长度,一个返回删除后的元素。两者都会改变原来的数组。
3、array_shift()
函数说明:
将 array 的第一个单元移出并作为结果返回,将 array 的长度减一并将所有其它单元向前移动一位。
返回移出的值,如果 array 为 空或不是一个数组则返回 NULL。
代码:
//array_shift(array)
$arr = ['a','b','c'];
echo array_shift($arr);//返回a
print_r($arr); //返回 Array ( [0] => b [1] => c )
学习总结:
这个函数和array_pop()功能相同,只是操作位置不同。一个在尾部操作,一个在头部操作。
4、array_unshift()
函数说明:
将传入的单元插入到 array 数组的开头。注意单元是作为整体被插入的,因此传入单元将保持同样的顺序。所有的数值键名将修改为从零开始重新计数,所有的文字键名保持不变。
返回 array 数组新的单元数目。
代码:
//array_unshift(array, var)
$arr = ['a','b','c'];
echo array_unshift($arr,'d');//返回4
print_r($arr); //返回 Array ( [0] => d [1] => a [2] => b [3] => c )
学习总结:
这个函数和array_shift都是在头部操作元素,不过一个删除元素,一个添加元素。可以一起记忆。
小总结:
1、array_push()、array_pop()、array_shift()、array_unshift()都是对数组进行添加和删除,找到异同点可以关联记忆这4个函数。
5、array_merge()
函数说明:
将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。
如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。
如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。
代码:
//array_merge(array1,array2)
$arr1 = ['a','b','c'];
$arr2 = ['d','e','f'];
$new_arr = array_merge($arr1,$arr2);
print_r($new_arr);//返回 Array ( [0] => a [1] => b [2] => c [3] => d [4] => e [5] => f )
学习总结:
这个函数可以将多个数组合并成一个新数组,参数必须要是数组,而不能将数组和单个元素合并在一起。合并数组的时候要注意键名重复的问题,以免出问题。
6、array_sum()
函数说明:
将数组中的所有值相加,并返回结果。
代码:
//array_sum(array)
$arr = [1,3,5,7,9];
echo array_sum($arr);//返回25
学习总结:
这个函数从命名上就很直观的能知道它的用途,在一些需要计算整个数组的和的时候,还是可以派的上用途。
7、array_map()
函数说明:
返回数组,是为 array1 每个元素应用 callback函数之后的数组。 callback 函数形参的数量和传给 array_map() 数组数量,两者必须一样。
代码:
//array_map(callback, arr1)
$arr =[1,2,3,4,5,6,7,8,9];
//定义一个计算平方的函数
function square($n)
{
return $n * $n;
}
$new_arr = array_map('square', $arr);//为每个元素都调用函数计算平方
print_r($new_arr);//返回Array ( [0] => 1 [1] => 4 [2] => 9 [3] => 16 [4] => 25 [5] => 36 [6] => 49 [7] => 64 [8] => 81 )
//定义一个匿名函数
$square = function($n){
return $n * $n;
};
$new_arr = array_map($square, $arr);//为每个元素都调用匿名函数计算平方
print_r($new_arr);//返回Array ( [0] => 1 [1] => 4 [2] => 9 [3] => 16 [4] => 25 [5] => 36 [6] => 49 [7] => 64 [8] => 81 )
//定义2个数组
$arr1 = [1,3,5,7,9];
$arr2 = [0,2,4,8,10];
//定义1个2个元素相加的函数
$add = function($a,$b){
return $a + $b;
};//注意分号
$new_arr = array_map($add, $arr1,$arr2);//分别将两个数组的元素分别传进匿名函数,计算求和。
print_r($new_arr);//返回 Array ( [0] => 1 [1] => 5 [2] => 9 [3] => 15 [4] => 19 )
学习总结:
1、这个函数可以将数组的元素依次传入定义好的函数中处理,最后返回一个经过遍历处理的新数组。在一些需要遍历处理数组数据的时候可以考虑使用,总是使用foreach难免会有些单调。
2、重点不光可以操作一个数组,还可以操作多个数组,听map的名字。应该也知道使用这个函数用来处理一些有映射关系的数组比较快速,简便。
8、array_slice()
函数说明:
从数组中取出一段,返回根据 offset 和 length 参数所指定的 array 数组中的一段序列。
如果 offset 非负,则序列将从 array 中的此偏移量开始。
如果 offset 为负,则序列将从 array 中距离末端这么远的地方开始。
如果给出了 length 并且为正,则序列中将具有这么多的单元。
如果给出了 length 并且为负,则序列将终止在距离数组末端这么远的地方。 //末端的位置。
如果省略,则序列将从 offset 开始一直到 array 的末端。
返回其中一段。 如果 offset 参数大于 array 尺寸,就会返回空的 array。
代码:
//array_slice(array, offset,length)
$arr = [1,2,3,4,5];
print_r(array_slice($arr, 2));//返回 Array ( [0] => 3 [1] => 4 [2] => 5 )
print_r(array_slice($arr, 2,1));//返回 Array ( [0] => 3 )
print_r(array_slice($arr, 0,-1));//返回 Array ( [0] => 4 )
总结:
先学习这几个函数,PHP的数组函数当然不止这么多,不过要根据自己开发过程中哪些函数使用比较频繁,着重学习下比较好。掌握一些数组函数,在有一些数组的操作的时候可以事倍功半,起码不会像以前一样动不动就写个for循环或者foreach。
不过也不能过于依赖函数,写代码还是需要灵活多变的,通俗易懂、逻辑清晰更加重要。
上一篇: PHP常用数组函数
下一篇: 计算语文和数学成绩的总和java实现