php函数与数组
PHP数组中常用的函数:
1.//array_values — 返回数组中所有的值
$array = array("name"=>"zhangsan","age"=>"10","sex"=>"man");
$tem= array_values($array);
echo "<pre>";
print_r($tem);
echo "</pre>";
输出结果如下:
2.array_keys — 返回数组中部分的或所有的键名
$array = array("name"=>"zhangsan","age"=>"10","sex"=>"man");
$tem= array_keys($array);
echo "<pre>";
print_r($tem);
echo "</pre>";
输出结果如下:
3.in_array — 检查数组中是否存在某个值,返回布尔类型(bool)的值
$array = array("name"=>"zhangsan","age"=>"10","sex"=>"man");
$tem= in_array("10",$array,false);
echo "<pre>";
print_r($tem);
echo "</pre>";
其中第三个参数默认false,如果存在则返回1,不存在,则没有返回值。如若设置成true,则会检查类型是否相同,相当于“===” 的效果。
4.array_flip — 交换数组中的键和值
$array = array("name"=>"zhangsan","age"=>"10","sex"=>"man");
$tem= array_flip($array);
echo "<pre>";
print_r($tem);
echo "</pre>";
输出结果如下:
这里需要注意$array 中的值需要能够作为合法的键名,例如需要是 integer 或者 string。如果值的类型不对将发出一个警告,并且有问题的键/值对将不会翻转。
如果同一个值出现了多次,则最后一个键名将作为它的值,所有其它的都丢失了。
5.array_reverse — 返回一个单元顺序相反的数组,例如:
$array = array("zhangsan",5,"10","sex"=>"man");
$tem= array_reverse($array);
echo "<pre>";
print_r($tem);
echo "</pre>";
如图所示:
注意,如果这里的第二个参数,设置为true,则会保留数字的键。非数字的键则不受这个设置的影响,总是会被保留。例:
$array = array("zhangsan",5,"10","sex"=>"man");
$tem= array_reverse($array,true);
echo "<pre>";
print_r($tem);
echo "</pre>";
这里的第二个参数,设置为true,如下图所示:
6.count — 计算数组中的单元数目或对象中的属性个数,例如:
$array = array("zhangsan",5,"10","sex"=>"man");
$tem= count($array);
echo "<pre>";
print_r($tem);
echo "</pre>";
这里的$tem 就是数组的个数,个数为4;
7.array_count_values — 统计数组中所有的值出现的次数,例如:
$array = array("zhangsan",5,"10","sex"=>"man",5);
$tem= count($array);
echo "<pre>";
print_r($tem);
echo "</pre>";
如下图所示:
8.array_unique — 移除数组中重复的值,接受array
作为输入并返回没有重复值的新数组。 例如:
$array = array("zhangsan",5,"10","sex"=>"man",5);
$tem=array_unique ($array);
echo "<pre>";
print_r($tem);
echo "</pre>";
如下图所示:
9.array_filter — 用回调函数过滤数组中的单元 ,例如:过滤下面数组中小于3的数组。
$array = array(1,2,3,4,5);
//回调函数如下
function filter($val){
if($val>3){
return $val;
}
}
//返回过滤后的数组。
$tem = array_filter($array,"filter");
echo "<pre>";
print_r($tem);
echo "</pre>";
结果如下图所示:
10.array_walk — 使用用户自定义函数对数组中的每个元素做回调处理。成功时返回 TRUE
, 或者在失败时返回 FALSE
。
$array = array(1,2,3,4,5);
//回调函数如下
function walk($val){
$val=$val*$val;
//没有返回值
}
//使用自定义函数,让每个元素做回调处理
$tem = array_walk($array,"walk");
echo "<pre>";
print_r($tem);
echo "</pre>";
11.array_map — 为数组的每个元素应用回调函数
$array = array(1,2,3,4,5);
//回调函数如下
function map($val){
$val=$val*$val;
return $val;//有返回值
}
//使用自定义函数,让每个元素做回调处理并组成一个新的数组
$tem = array_map("map",$array);
echo "<pre>";
print_r($tem);
echo "</pre>";
原来数组还存在,返回一个新的数组,返回结果如下图所示:
这里array_map与array_walk 的区别,array_walk 是使数组里的每个元素做回调处理,不返回值;array_map是使数组里的每个元素做回调处理,并返回一个新的数组。
12.sort — 对数组进行升序排序。sort() 例子
$array = array(10,2,13,4,50);
//对数组进行升序排序
$tem = sort($array);
echo "<pre>";
print_r($tem);//函数成功返回值
echo "<br>";
//遍历出排序后的数组
foreach ($array as $key => $val) {
echo "array [" . $key . "] = " . $val . "\n";
}
echo "</pre>";
成功时返回 TRUE
, 或者在失败时返回 FALSE
。 如下图所示:
![](https://images2015.cnblogs.com/blog/1126716/201703/1126716-20170316210138854-1375358845.png)
13.rsort — 对数组逆向排序(降序) rsort() 例子
$array = array(10,2,13,4,50);
//对数组进行降序排序
$tem = rsort($array);
echo "<pre>";
print_r($tem);//函数成功返回值
echo "<br>";
//遍历出排序后的数组
foreach ($array as $key => $val) {
echo "array [" . $key . "] = " . $val . "\n";
}
echo "</pre>";
成功时返回 TRUE
, 或者在失败时返回 FALSE
。 如下图所示:
![](https://images2015.cnblogs.com/blog/1126716/201703/1126716-20170316210626135-926458465.png)
其他排序方式如下图所示:
![](https://images2015.cnblogs.com/blog/1126716/201703/1126716-20170316210738479-155082957.png)
14.array_slice — 从数组中取出一段 。array_slice 例子:
$array = array(10,2,13,4,50,15);
//截取索引为1开始截取长度为5的数组元素
$tem = array_slice($array,1,5);
echo "<pre>";
print_r($tem);
echo "</pre>";
如下图所示:
15.array_splice — 把数组中的一部分去掉并用其它值取代 。 array_splice 例子
$array = array(1,2,3,4,5);
//截取索引为2开始去掉1个长度的数组元素并用元素6来降3取代,注意array_splice的参数不能超过四个,如要添加更多元素,需要建立一个新的数组,将需要添加的元素放进新数组,
//再将新数组放入array_splice第四个参数即可
array_splice($array,2,1,6);
echo "<pre>";
print_r($array);
echo "</pre>";
结果如下图所示:
16.array_combine —(合并两个数组) 创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值 。例子:
//数组1
$array = array(1,2,3,4);
//数组2
$array2 = array("zhangsan","lisi","wangwu","zhaoli");
//合并数组
$tem =array_combine($array,$array2);
echo "<pre>";
print_r($tem);
echo "</pre>";
结果如下图:
17.array_merge — 合并一个或多个数组
//数组1
$array = array(1,2,3,4);
//数组2
$array2 = array("zhangsan","lisi","wangwu","zhaoli");
//合并数组
$tem =array_merge($array,$array2);
echo "<pre>";
print_r($tem);
echo "</pre>";
结果如下图:
18.array_intersect — 计算数组的交集。例子:
//数组1
$array = array(1,2,3,4,5);
//数组2
$array2 = array(3,4,5,6,7);
//交集
$tem =array_intersect($array,$array2);
echo "<pre>";
print_r($tem);
echo "</pre>";
结果如下图:
19.array_diff — 计算数组的差集。
注意,返回的是第一个数组当中与第二个数组当中不同的数值,不会返回第二个数组中的值。
例子:
//数组1
$array = array(1,2,3,4,5);
//数组2
$array2 = array(3,4,5,6,7);
//交集
$tem =array_diff($array,$array2);
echo "<pre>";
print_r($tem);
echo "</pre>";
如图所示:
20.array_pop — 将数组最后一个单元弹出(出栈)。返回最后一个值,注意:
返回 array
的最后一个值。如果 array
是空(如果不是一个数组),将会返回 NULL
。
$array = array(1,2,3,4,5);
$tem =array_pop($array);
echo "<pre>";
print_r($tem);//返回最后一个值为5
echo "</pre>";
21.array_push — 将一个或多个单元压入数组的末尾(入栈) 。返回处理之后数组的元素个数。
$array = array(1,2,3,4,5);
$tem =array_push($array,6);
echo "<pre>";
print_r($tem);//返回处理之后数组的元素个数。
echo "</pre>";
22.array_shift — 将数组开头的单元移出数组。注意,返回移出的值,如果 array
为 空或不是一个数组则返回 NULL
。
$array = array(1,2,3,4,5);
$tem =array_shift($array);
echo "<pre>";
print_r($tem);//返回移出的值为1
echo "</pre>";
23.array_unshift — 在数组开头插入一个或多个单元
$array = array(1,2,3,4,5);
$tem =array_unshift($array,22);
echo "<pre>";
print_r($tem);//返回数组的元素个数
echo "</pre>";
24.list();
//按索引角标顺序来进行解构,但是角标必须从0开始,并且是连续的
//只对索引数组有效,当遇到关联数组会直接跳过
$array5 = array("name" => "zhangsan",0 => "lisi",1 =>"wangwu");
list($a,$b) = $array5;
echo $a." ".$b; //结果为lisi,wangwu
25.each();
//会返回第一个键值对的一个数组(索引和关联数组的混合形式),
//当第二次调用是,游标会自动到下一个,即第二个键值对数组;
$array = array("name" => "fangming",0 => "18", "sex" => "man");
$iem1 = each($array);
print_r($iem1);
echo "<br>";
$iem2 = each($array);
print_r($iem2);
26.list,each结合使用
list($a,$b) = each($array);
echo $a.":".$b."<br>";
27.利用while循环结合list,each进行遍历
$array = array("name" => "fangming","age" => "18", "sex" => "man");
while(list($a,$b) = each($array)){
echo $a.":".$b."<br>";
};
28.reset,重置数组,使游标返回第一位
reset($array);