数组函数示例:
1.array_chunk() 函数 把数组分割为带有两个元素的数组:
<?php
$age=array("小马"=>"51","小红"=>"42","小张"=>"31","小王"=>"35");
print_r(array_chunk($age,2,true));
?>
结果:Array ( [0] => Array ( [小马] => 51 [小红] => 42 ) [1] => Array ( [小张] => 31 [小王] => 35 ) )
2.array_diff() 函数 比较两个数组的键值,并返回差集
<?php
$a1=array("a"=>"小红","b"=>"小马","c"=>"小王","d"=>"小张");
$a2=array("e"=>"小红","f"=>"小马","g"=>"小王");
$result=array_diff($a1,$a2);
print_r($result);
?>
结果:Array ( [d] => 小张 )
3.array_fill() 函数 用值填充数组
<?php
$a1=array_fill(1,3,"小马");
print_r($a1);
?>
结果:Array ( [1] => 小马 [2] => 小马 [3] => 小马 )
4.array_keys() 函数 返回包含数组中所有键名的一个新数组。
<?php
$a=array("小马"=>"88","小张"=>"66","小王"=>"22");
print_r(array_keys($a,"22"));
?>
结果:Array ( [0] => 小王 )
5.array_merge() 函数 把一个或多个数组合并为一个数组
<?php
$a1=array("a"=>"小马","b"=>"小张");
$a2=array("c"=>"小红","b"=>"小王");
print_r(array_merge($a1,$a2));
?>
结果:Array ( [a] => 小马 [b] => 小王 [c] => 小红 )
6.array_rand() 函数返回数组中的随机键名,或者如果您规定函数返回不只一个键名,则返回包含随机键名的数组。
<?php
$a=array("a"=>"小马","b"=>"小红","c"=>"小张","d"=>"小王");
print_r(array_rand($a,1));
?>
结果:每次刷新结果不同,a,b,c,d的一个。
7.array_unique() 函数移除数组中的重复的值,并返回结果数组。
<?php
$a=array("a"=>"小马","b"=>"小张","c"=>"小马");
print_r(array_unique($a));
?>
结果:Array ( [a] => 小马 [b] => 小张 )
8.array_rand() 函数从数组中随机选出一个或多个元素,并返回。
<?php
$a=array("小马","小张","小红","小王","小李");
$random_keys=array_rand($a,3);
echo $a[$random_keys[0]]."<br>";
echo $a[$random_keys[1]]."<br>";
echo $a[$random_keys[2]];
?>
结果:随机的三个(小马 小张 小红),每次刷新都不一样。
9.natcasesort() 函数用不区分大小写的自然顺序算法对给定数组中的元素排序。
<?php
$temp_name = array("zhangsan","Wangwu","lisi","Maliu","tianqi");
natsort($temp_name);
echo "自然排序:";
print_r($temp_name);
echo "<br />";
natcasesort($temp_name);
echo "不区分大小写的自然排序:";
print_r($temp_name);
?>
结果:自然排序:Array ( [3] => Maliu [1] => Wangwu [2] => lisi [4] => tianqi [0] => zhangsan )
不区分大小写的自然排序:Array ( [2] => lisi [3] => Maliu [4] => tianqi [1] => Wangwu [0] => zhangsan )
10.uksort() 函数使用用户自定义的比较函数按照键名对数组排序,并保持索引关系。
<?php
function my_sort($a,$b)
{
if ($a==$b) return 0;
return ($a<$b)?-1:1;
}
$arr=array("a"=>4,"b"=>2,"c"=>8,"d"=>6);
uksort($arr,"my_sort");
foreach($arr as $x=>$x_value)
{
echo "Key=" . $x . ", Value=" . $x_value;
echo "<br>";
}
?>
结果:
Key=a, Value=4
Key=b, Value=2
Key=c, Value=8
Key=d, Value=6
11.回调函数
11.1array_filter() 函数用回调函数过滤数组中的值。
<?php
$entry = array(
0 => 'xiaoma',
1 => false,
2 => -1,
3 => null,
4 => ''
);
print_r(array_filter($entry));
?>
结果:Array ( [0] => xiaoma [2] => -1 )
11.2array_map(): 为数组中的每个元素应用回调函数进行处理,返回新数组。
<?php
function myfunction($v)
{
return($v*$v);
}
$a=array(11,12,13,14,15);
print_r(array_map("myfunction",$a));
?>
结果:Array ( [0] => 121 [1] => 144 [2] => 169 [3] => 196 [4] => 225 )
11.3array_reduce(): 迭代处理数组元素
<?php
function myfunction($v1,$v2)
{
return $v1 . "-" . $v2;
}
$a=array("草莓","苹果","香蕉");
print_r(array_reduce($a,"myfunction"));
?>
结果:-草莓-苹果-香蕉
11.4array_walk(): 使用自定义回调对数组中成员逐个处理,返回布尔值
<?php
function myfunction($value,$key)
{
echo "这个键 $key 的值是 $value<br>";
}
$a=array("a"=>"草莓","b"=>"苹果","c"=>"香蕉");
array_walk($a,"myfunction");
?>
结果:
这个键 a 的值是 草莓
这个键 b 的值是 苹果
这个键 c 的值是 香蕉
12.array_slice() 函数在数组中根据条件取出一段值,并返回。
<?php
$a=array("苹果","西瓜","草莓","菠萝","哈密瓜");
print_r(array_slice($a,1,3));//从数组的第二个元素开始取出,并仅返回3个元素
?>
结果:Array ( [0] => 西瓜 [1] => 草莓 [2] => 菠萝 )
13.array_splice() 函数从数组中移除选定的元素,并用新元素取代它。
<?php
$a1=array("a"=>"苹果","b"=>"菠萝","c"=>"西瓜","d"=>"荔枝");
$a2=array("a"=>"草莓","b"=>"橘子");
array_splice($a1,0,2,$a2);
print_r($a1);
?>
结果:Array ( [0] => 草莓 [1] => 橘子 [c] => 西瓜 [d] => 荔枝 )
总结:PHP数组是PHP必不可少的一部分,array函数也有很重要的作用,通过本次课学到了很多数组函数以及它们的使用方法。通过查询手册也看到了数组操作的基本函数、数组的分段和填充、数组与栈、数组与列队、回调函数、排序、计算、其他的数组函数等。