[总结]PHP数组
一、数组的分类
分为关联数组和索引数组两类。
关联数组即是以字符串为下标的数组;
索引数组即是以数字为下标的数组。
二、数组的声明
声明数组有两种方式
1、直接声明使用
2、使用array语言结构声明(注意,array是语言结构)。
三、数组的遍历
1、使用for循环遍历数组,但是这种遍历只能遍历索引数组,并且效率不如foreach效率高,使用较少。
2、使用foreach遍历数组。这是PHP专门为遍历数组设计的语言结构,效率很高,可以遍历索引数组和关联数组。
3、使用list(),each(),while进行遍历
list()是一个语言结构,会将索引数组中的值按照从下标0开始存起来。如:
$arr=array(0=>"ID",1="1");
list($key,$value)=$arr;
echo $key;//ID
echo $value;//1
each()就会将一个数组打造成上面$arr=array(0=>”ID”,1=>”1”)的形式。
结合起来使用,如下:
<?php
$arr=array(
array("ID"=>1,"name"=>"eric","number"=>"15764244227"),
array("ID"=>2,"name"=>"david","number"=>"15764244249"),
);
while(list($key,$value)=each($arr))
{
echo $value["ID"]." ".$value["name"]." ".$value["number"]."<br/>";
}
四、预定义数组
1、$_SERVER包含了服务器额信息
2、$_GET、$_POST、$_REQUEST
$_REQUEST包含了$_COOKIE中的内容,不安全,并且速度慢,非必要条件时,不建议使用。
3、$_COOKIE和$_SESSION
4、$GLOBALS包含了以上所有的超全局数组。
五、数组操作函数
1、键值对的操作
array_keys()返回数组中所有的健
array_values()返回数组中所有的值组成一个新数组,新数组是索引数组,下标从0开始。适用于下标混乱,或将关联数组转为索引数组的数组。
array_flip()键值对互换(即健换位值,值换为健)
array_reverse()将元素顺序翻转,即将第1个元素放到最后一个,依次换。
in_array(元素,数组)判断元素是否在数组里。
2、统计数组元素的个数和唯一性
count()统计元素个数
array_count_values()统计元素出现的次数
array_unique()将数组中重复的值删除,返回无重复元素的数组
3、使用回调函数处理数组
array_filter(array(),”func”) 使用回调函数进行过滤
调用func函数过滤array()中的元素,将array()中的元素依次传入func()中,如果func()返回true,则保留这个元素,否则删除这个元素。
如下:
<?php
function myFun($value)
{
if($value%2==0)
{
return true;
}
}
$arr=array(1,2,3,4,5);
$res= array_filter($arr,"myFun");
print_r($res);//Array ( [1] => 2 [3] => 4 )
array_map(func,array,[array]…)按照func的规则,作用于数组上,返回新数组。
<?php
function myFun($value)
{
if($value=="mysql")
return "oracle";
else
return $value;
}
$arr=array("linux","apache","mysql","php");
print_r(array_map("myFun",$arr));//Array ( [0] => linux [1] => apache [2] => oracle [3] => php )
最值得一提的是,array_map()还能处理多个数组。
如下代码:
<?php
function myFun($v1,$v2)
{
if($v1==$v2)
return "same";
else
return "different";
}
$arr1=array("linux","mysql","php");
$arr2=array("windows","oracle","php");
print_r(array_map("myFun",$arr1,$arr2));//Array ( [0] => different [1] => different [2] => same )
4、排序
对值进行排序:
sort()对元素值进行升序排列(asort()和sort()一样,不过asort()保留键名)
rsort()对元素值进行降序排列
对健进行排序:
ksort()对健进行升序排列
krsort()对健进行降序排列
使用回调函数进行排序。usort()、uksort()、uasort()
下面仅介绍usort(),其他使用方法一样。
如果按照升序排列,当$v1大于$v2时,返回1。
如果按照降序排列,当$v1大于$v2时,返回-1。
返回值为:Array ( [0] => php [1] => mysql [2] => Linux [3] => apache )
对多维数组的排序:array_multisort()(有点像group by)
<?php
$data=array(
array("id"=>1,"soft"=>"Linux","rating"=>3),
array("id"=>2,"soft"=>"Apache","rating"=>1),
array("id"=>3,"soft"=>"Mysql","rating"=>4),
array("id"=>4,"soft"=>"PHP","rating"=>2)
);
foreach($data as $k=>$v)
{
$soft[$k]=$v["soft"];
$rating[$k]=$v["rating"];
}
array_multisort($rating,$soft,$data);
print_r($data);
先按照$rating排序,当$rating相同时,再按照$soft排序。
5、拆分、合并
拆分:array_slice()
如下:1表示从下标1开始拆分,2表示拆分2个元素
合并:array_combine、array_merge
array_combine()将两个数组合并为一个,一个用作键名,一个用作键值。
输出为:Array ( [OS] => Linux [Server] => Apache [Database] => Mysql [Language] => php )
array_merge()将两个数组合并为一个数组:
输出为:
Array ( [0] => OS [1] => Server [2] => Database [3] => Language [4] => Linux [5] => Apache [6] => Mysql [7] => php )
6、求交集与差集
求交集:两个数组中共有的部分:
输出为:Array ( [2] => Mysql [3] => php )
求差集:两个$arr1含有,但$arr2没有的:
输出:Array ( [0] => Windows [1] => Tomcat )
六、使用数组建立栈和队列
栈的建立:
array_push()压栈
array_pop()出栈
栈:后进先出,故array_pop()弹出最后一个进入栈的元素
队列的建立:
array_push()入队
array_shift()出队
队列:先进先出,故array_shift()队首出队。
- 上一篇: PHP中的数组总结
- 下一篇: 学习PHP的数组总结【经验】