一、数组的计算
1.array_sum($arr); //对数组的值求和运算,以键值无关
Example:
<?php
$arr = array('b'=>20,'hhg'=>30);
var_dump(array_sum($arr)); //输出 int(50)
?>
2.array_merge($arr1,$arr2);//合并两个或多个(相同字符串键名,后面覆盖前面,相同的数字键名,后面的附加到后面
Example1:
<?php
$arr1 = array('1'=>20,'4'=>30);
$arr2 = array('1'=>11,'3'=>22);
var_dump(array_merge($arr1,$arr2));
//输出 array(4) { [0]=> int(20) [1]=> int(30) [2]=> int(11) [3]=> int(22) }
?>
Example2:
<?php
$arr1 = array('q'=>'qqq','b'=>'bbb');
$arr2 = array('c'=>'ccc','q'=>'jjjjj');
var_dump(array_merge($arr1,$arr2));
//输出 array(3) { ["q"]=> string(5) "jjjjj" ["b"]=> string(3) "bbb" ["c"]=> string(3) "ccc" }
?>
3.array_diff($arr1, $arr2); //返回差集结果数组
Example:
<php
$arr1 = array('q'=>'qqq','b'=>'bbb');
$arr2 = array('c'=>'ccc','qq'=>'qqq','l'=>'llll');
var_dump(array_diff($arr1, $arr2));
//输出 array(1) { ["b"]=> string(3) "bbb" }
?>
注意:只比较值,注意是数组
$arr1与$arr2
差集结果,所以 'l'='1111'不是
array_diff_assoc($arr1, $arr2); //返回差集结果数组,键名也做比较
4.array_intersect($arr1, $arr2);//返回结果交集数组
<?php
$arr1 = array('j'=>'qqq','b'=>'bbb');
$arr2 = array('c'=>'ccc','q'=>'qqq');
var_dump(array_intersect($arr1, $arr2));
//输出 array(1) { ["b"]=> string(3) "bbb" }
?>
注意:只比较值,以第一个数组为主,所以'c'='ccc'不输出
array_intersect_assoc($arr1, $arr2); //返回交集结果数组,键名也做比较
二、数组的排序
1.sort($arr); //由小到大,忽略键名
<?php
$arr = array('qq'=>40,'ww'=>38,'rr'=>62,'tt'=>55);
sort($arr); //由小到大,忽略键名
print_r($arr); //Array ( [0] => 38 [1] => 40 [2] => 55 [3] => 62 )
?>
2.rsort($arr);//由大到小,忽略键名
<?php
$arr = array('qq'=>40,'ww'=>38,'rr'=>62,'tt'=>55);
rsort($arr);//由大到小,忽略键名
print_r($arr);//Array ( [0] => 62 [1] => 55 [2] => 40 [3] => 38 )
?>
3.asort($arr);//由小到大,保留键名
<?php
$arr = array('qq'=>40,'ww'=>38,'rr'=>62,'tt'=>55);
asort($arr);//由小到大,保留键名
print_r($arr);//Array ( [ww] => 38 [qq] => 40 [tt] => 55 [rr] => 62 )
?>
4.arsort($arr);//由大到小,保留键名
<?php
$arr = array('qq'=>40,'ww'=>38,'rr'=>62,'tt'=>55);
arsort($arr);//由大到小,保留键名
print_r($arr);//Array ( [rr] => 62 [tt] => 55 [qq] => 40 [ww] => 38 )
?>
5.ksort($arr); //按照键名正序排序
<?php
$arr = array(40=>'qq',38=>'ww',62=>'ww',55=>'tt');
ksort($arr); //按照键名正序排序
print_r($arr);//Array ( [38] => ww [40] => qq [55] => tt [62] => ww )
?>
6.krsort($arr);//按照键名逆序排序
<?php
$arr = array(40=>'qq',38=>'ww',62=>'ww',55=>'tt');
krsort($arr);//按照键名逆序排序
print_r($arr);//Array ( [62] => ww [55] => tt [40] => qq [38] => ww )
?>
三、数组的键值操作函数
1.array_values($arr)); //获得数组的值
<?php
$arr = array(40=>'qq',38=>'ww',62=>'ss',55=>'tt');
print_r(array_values($arr)); //获得数组的值
//Array ( [0] => qq [1] => ww [2] => ss [3] => tt )
?>
2.array_keys($arr); //获得数组的键名
<?php
$arr = array(40=>'qq',38=>'ww',62=>'ss',55=>'tt');
print_r(array_keys($arr)); //获得数组的键名
//Array ( [0] => 40 [1] => 38 [2] => 62 [3] => 55 )
?>
3.array_flip($arr); //数组中的值与键名互换(如果有重复前面的会被后面的覆盖)
<?php
$arr = array(40=>'qq',38=>'ww',62=>'ss',55=>'tt');
print_r(array_flip($arr)); //数组中的值与键名互换(如果有重复前面的会被后面的覆盖)
//Array ( [qq] => 40 [ww] => 38 [ss] => 62 [tt] => 55 )
?>
4.array_reverse($arr); //将数组中的元素翻转(前后顺序) 不保留键名
<?php
$arr = array(40=>'qq',38=>'ww',62=>'ss',55=>'tt');
print_r(array_reverse($arr)); //将数组中的元素翻转(前后顺序) 不保留键名
//Array ( [0] => tt [1] => ss [2] => ww [3] => qq )
?>
5.array_unique($arr);// 删除数组中重复的值(删除出现在数组后面)
<?php
$arr = array(40=>'qq',38=>'ww',62=>'ss',55=>'qq');
print_r(array_unique($arr)); // 删除数组中重复的值(删除出现在数组后面)
//Array ( [40] => qq [38] => ww [62] => ss )
?>
6.array_search('qq',$arr); //检索给定的值,加true则是严格类型检查
<?php
$arr = array(40=>'qq',38=>'ww',62=>'ss',55=>'qq');
print_r(array_search('qq',$arr)); //检索给定的值,加true则是严格类型检查
//输出40 检索出一个就停止
?>
7.in_array("qq", $arr); //在数组中检索qq,返回true or false
<?php
$arr = array(40=>'qq',38=>'ww',62=>'ss',55=>'qq');
var_dump(in_array("qq", $arr)); //在数组中检索qq
//返回true
?>
8.array_key_exists("40", $arr); // 检索给定的键名是否存在数组中
<?php
$arr = array(40=>'qq',38=>'ww',62=>'ss',55=>'qq');
var_dump(array_key_exists("40", $arr)); // 检索给定的键名是否存在数组中
?>
9.array_count_values($arr); // 统计数组中所有值出现的次数
<?php
$arr = array(40=>'qq',38=>'ww',62=>'ss',55=>'qq');
print_r(array_count_values($arr)); // 统计数组中所有值出现的次数
//Array ( [qq] => 2 [ww] => 1 [ss] => 1 )
?>
10.shuffle($arr); // 将数组打乱,不保留键名
<?php
$arr = array(40=>'qq',20=>'ww',38=>'ss',60=>'qq');
shuffle($arr); // 将数组打乱,不保留键名
print_r($arr); //Array ( [0] => ss [1] => qq [2] => ww [3] => qq )
?>
四、数组的遍历函数
1.list(); //用数组中的元素为一组变量赋值,仅能用于索引数组
<?php
$arr = array('qq','ww','ss','qq');
list($a,$b,$c,$d) = $arr; //变量分别匹配数组中的值
print_r($a.$b.$c.$d); //qqwwssqq
?>
2.each(); //返回数组当前元素的键值对,并将指针移动到下一个元素位置
<?php
$arr = array(40=>'qq',20=>'ww',38=>'ss',60=>'qq');
print_r(each($arr));//现在包含有如下的键/值对:
//Array ( [1] => qq [value] => qq [0] => 40 [key] => 40 )
?>
返回 array 数组中当前指针位置的键/值对并向前移动数组指针。键值对被返回为四个单元的数组,键名为0,1,key和 value。单元 0 和 key 包含有数组单元的键名,1 和 value 包含有数据。
如果内部指针越过了数组的末端,则 each() 返回 FALSE。
<?php
$fruit = array('a' => 'apple', 'b' => 'banana', 'c' => 'cranberry');
reset($fruit); // 将数组的内部指针指向第一个单元
while (list($key, $val) = each($fruit)) {
echo "$key => $val\n";
}
//a => apple b => banana c => cranberry
?>
五、数组与栈
1.array_push($arr,"Horse","Bird"); //向数组最后压入一个或多个元素
<?php
$arr=array("Dog","Cat");
array_push($arr,"Horse","Bird"); //向数组最后压入一个或多个元素
print_r($arr);//Array ( [0] => Dog [1] => Cat [2] => Horse [3] => Bird )
?>
索引数组
<?php
$arr=array(23=>"Dog",33=>"Cat");
array_push($arr,"Horse","Bird"); //向数组最后压入一个或多个元素
print_r($arr);//Array ( [23] => Dog [33] => Cat [34] => Horse [35] => Bird )
?>
指定键名
<?php
$arr=array('qq'=>"Dog",'w'=>"Cat");
array_push($arr,"Horse","Bird"); //向数组最后压入一个或多个元素
print_r($arr);//Array ( [qq] => Dog [w] => Cat [0] => Horse [1] => Bird )
?>
2.array_pop($arr);//删除数组中的最后一个元素
<?php
$arr=array("Dog","Cat","Horse");
array_pop($arr);
print_r($arr); //Array ( [0] => Dog [1] => Cat )
?>
3.array_shift($arr);//删除数组中的第一个元素,并返回被删除元素的值
<?php
$arr=array("a"=>"Dog","b"=>"Cat","c"=>"Horse");
echo array_shift($arr); //输出Dog 删除数组中的第一个元素,并返回被删除元素的值
print_r ($arr); //输出Array ( [b] => Cat [c] => Horse )
?>
4.array_unshift($arr,"Horse"); //在数组开头插入一个或多个元素
<?php
$arr = array("a"=>"Cat","b"=>"Dog");
array_unshift($arr,"Horse"); //在数组开头插入一个或多个元素
print_r($arr); //Array ( [0] => Horse [a] => Cat [b] => Dog )
?>
插入数组
<?php
$arr = array("a"=>"Cat","b"=>"Dog");
array_unshift($arr,"qq",array(1,2)); //在数组开头插入一个或多个元素
print_r($arr);
//Array ( [0] => qq [1] => Array ( [0] => 1 [1] => 2 ) [a] => Cat [b] => Dog )
?>
六、数组的分割与填充替换
1.array_slice($arr,1,2); //在数组中根据条件取出一段值,并返回。
<?php
$arr=array(0=>"Dog",1=>"Cat",2=>"Horse",3=>"Bird");
print_r(array_slice($arr,1,2));//在数组中根据条件取出一段值,并返回。
//Array ( [0] => Cat [1] => Horse )
?>
2.array_splice(); //把数组中一部分删除用其他值替代
<?php
$arr1=array(0=>"Dog",1=>"Cat",2=>"Horse",3=>"Bird");
$arr2=array(0=>"Tiger",1=>"Lion");
array_splice($arr1,0,2,$arr2); //从arr1第0个元素开始 2表示2个元素
//$arr1被移除的部分由$arr2补全
print_r($arr1); //输出Array ( [0] => Tiger [1] => Lion [2] => Horse [3] => Bird )
//将原数组替换,注意替换后数组中键名不保留
?>
3.array_chunk($arr, 2, TRUE); //将一个数组分割成多个,TRUE为保留原数组的键名(分割多个数组)
<?php
$arr=array("a"=>"Cat","b"=>"Dog","c"=>"Horse","d"=>"Cow");
print_r(array_chunk($arr,1,TRUE)); //分割后的多维数组,规定每个新数组包含2个元素
//Array ( [0] => Array ( [a] => Cat [b] => Dog ) [1] => Array ( [c] => Horse [d] => Cow ) )
?>