在PHP中,对数组的操作是非常常见的,所以,掌握一些常用且重要的数组操作函数尤其重要。现将一些本人认为较为重要的函数总结如下:
1.创建数组使用的是array(),如:
<?php
$a = array("a","b"); //当然还有其他一些基础的创建数组的方法,比如使用键值,二维数组等,这里就不再赘述
?>
2.array_values() 返回数组的所有值,但不包括数组的键值。返回的是以数字为键值的数组,从0开始。如:
<?php
$arr = array("name1"=>"aa","name2"=>"bb","name3"=>"cc"); //此数组在以下可能用到,不在赘述
print_r(array_values($arr)); //输出为 Array ( [0]=>aa [1]=>bb [2]=>cc )
?>
3.array_keys() 返回数组的键名,以数字为键值的数组形式,从0开始。如:
<?php
print_r(array_keys($arr)); //输出为 Array ( [0]=>name1 [1]=>name2 [2]=>name3 )
?>
4.array_flip() 将数组中的值和键进行互换,如果反转后的数组的值有相同的,那么只取最后一个值。如:
<?php
print_r(array_flip($arr)); //将会输出 Array ( [aa]=>name1 [bb]=>name2 [cc]=>name3 )
?>
5.array_search(values,array) 在数组中搜索某个值并返回此值的键名。如:
<?php
echo array_search("bb",$arr); //将会输出值为bb的键名,为name2
?>
6.array_reverse() 将数组中的元素倒叙,返回值为倒叙之后的数组。如:
<?php
print_r(array_reverse($arr)); //会输出 Array ( [name3]=>cc [name2]=>bb [name1]=>aa )
?>
7.in_array(search,array,type) 在数组中搜索是否存在相应的值,如果找到返回true,否则返回false。参数说明:search为要搜索的值;array是被搜索的数组;type为搜索类型,为true时是区分大小写和类型。如:
<?php
$a = array("abc","123","fg");
echo in_array("123",$a); //能找到123,返回true
?>
8.array_key_exists(key,array) 检查相应的key值是否在数组中,如果在返回true,不在返回false。如:
<?php
echo array_key_exitsts("name2",$arr); //会输出true
?>
9.array_count_values() 是统计数组中所有值出现的次数,返回一个数组,数组的键名为原数组的值,键值为出现的次数。如:
<?php
$a = array("A","asd","A","abc");
print_r(array_count_values($a)); //输出结果为 Array ( [A]=>2 [asd]=>1 [abc]=>1 )
?>
10.array_slice(array,start,length,preserve) 根据条件取出数组中的一段值。参数说明:array是要处理的数组;start是从数组的第几个元素开始(包括此元素,为负数时是从末尾从1开始数);length是取出的长度(为负数时是从末尾开始数,从前向后取到数到的那个数终止);preserve为true时是保留键名。为false时为重置键名,默认为false。如:
<?php
$a = array("as","cd","ks","we","ig");
print_r(array_slice($a,1,2)); //会输出 Array ( [0]=>cd [1]=>ks )
?>
11.array_splice(array1,start,length,array2) 从数组中移除相应的元素,并用新元素替换它,其中键名会被重新设为数字键名,从0开始,原来的键名不变。返回值为被移除的数组。参数说明:array1是要被替换的数组;start是从哪里开始;length是要替换的元素的长度(为0时就在相应的位置插入,为负数时就从最后数,从前向后到此为止);array2是替换为的元素数组。如:
<?php
$a1 = array("a"=>"red","b"=>"blue","c"=>"black");
$a2 = array("d"=>"pur","e"=>"ss");
print_r(array_splice($a1,0,2,$a2)); //会输出 Array ( [a]=>red [b]=>blue )
print_r($a1); //会输出 Array ( [0]=>pur [1]=>ss [c]=>black )
?>
12.array_chunk(array,size,preserve_key) 把数组分割为新的数组块,最后一个块可能会少一些。参数说明:array是要分割的数组;size是分割的大小;preserve_key为是否保持原来数组的键名,默认为false,即使用新的数字键名从0开始。如:
<?php
$a = array("a","b","c","d","e");
print_r(array_chunk($a,2)); //输出为 Array ( [0]=>Array( [0]=>a [1]=>b) [1]=>Array([0]=>c [1]=>d) [2]=>Array([0]=>e)) 这个看着可能有点晕,其实类似于二维数组,以数组为元素的数组
?>
13.array_push() (进栈)向数组的尾部添加一个或多个元素,相当于多次调用$array[]=$values,添加进去的元素的键名为从0开始的数字键名。返回值为新数组的长度。<如果是单纯地向数组中添加元素,使用$array[]=$values更好,因为没有函数调用>。如:
<?php
$a = array("a","b","c");
array_push($a,"d","e");
print_r($a); //会输出 Array ( [0]=>a [1]=>b [2]=>c [3]=>d [4]=>e )
?>
14.array_pop() (出栈)从数组的中删除最后一个元素,如:
<?php
$a = array("a","b","c");
array_pop($a);
print_r($a); //输出为 Array ([0]=>a [1]=>b [2]=>c )
?>
15.array_shift() 删除数组的第一个元素,返回值为被删除数组的值。<如果键名是数字,那么元素会重新获得数字键名,从0开始>。如:
<?php
$a = array(0=>"a",1=>"b",2=>"c");
echo array_shift($a); //会输出a
print_r($a); //输出为 Array ([0]=>b [1]=>c )
?>
16.array_unshift() 向数组的头部插入一个或多个元素,键名为从0开始的数字键名,原数组字符串的的键名不变。返回值为新数组的元素的个数。如:
<?php
$a = array(0=>"a",1=>"b",2=>"c");
echo array_unshift($a,"d","e"); //会输出5
print_r($a); //输出为 Array ([0]=>a [1]=>b [2]=>c [3]=>d [4]=>e )
?>
17.array_sum() 返回数组中值的和。如:
<?php
$a = array(1,2,3);
echo array_sum($a); //会输出6
?>
18.对数组进行排序的相关函数:
数组是很常用的,所以有必要记住一些常用的函数,以上的整理不是太全面,其他请参考PHP手册。