PHP数组函数

一、数组的计算

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。 

each() 经常和 list()结合使用来遍历数组,例如:

<?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 ) )
?>



















  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值