php中的数组
在php中数组是一个很强大的符合数据类型,它甚至可以完成其他语言中的数据结构的功能。
在php中数组分为:
1.索引数组:数组的索引值全为整数。
2.关联数组:数组的索引值不全为整数,可能是字符串。
在php中数组是不需要提前声明,设定数组长度,设定数组类型的。PHP中数组长度是自增,数组里可以放入不同类型的数据。
1.数组的声明
(1). $t[] $t[][] 声明
$t[]=1; 定义数组$t的第一个元素的值为1即 [0]=>1
$t['2']=2; 定义数组$t的键名为'2' 键值为2 的元素 即 ['2']=>2
$t[][]=3 定义一个二维数组$t的第一行第一列元素值为3 即[0][0]=>3
(2). array()声明
$t=array(1,2.3) 定义数组元素无 [0]=>1 [1]=>2 [2]=>3
$t=array(
0=>array('1'=>1),
'2'=>array('2'=>2)
) 定义一个二维数组,
[
0=>['1'=>1],
'2'=>['2'=>2]
]
2.数组的遍历
(1). for foreach
(2). each([array]) each()函数输入一个数组,返回该数组当前元素的键值对,并且向后移动数组指针到下一个元素的位置。
其返回值包括4个元素的关联和索引混合的数组 [0]=>key [1]=>value ['key']=>key ['value']=>value
当指针越过数组末端,返回false
list() list()函数不是真正的函数,是php中的语言结构,它仅能用于数字索引的数组并且假定索引是从0开始的
例如:
$t=array('zhangsan','lisi')
list($user1,$user2)=$t
echo $user1; //输出zhangsan,所以list其实就是一个临时的取值器
一般是将each()与list() while()一起搭配来遍历数组的
while( list($key,$value)=each($arr) )
{
echo "<br />".$hey.":".$value;
}
(3). 使用数组内部指针
current([array]) 取得当前指针所在位置的元素的值。
key([array]) 取得当前指针所在位置的元素的索引。
next([array]) 将当前指针的位置移到下一个位置,不可循环,移到数组末端,再使用next()无效。
prev([array]) 将当前指针向前到一位,不可循环。
end([array]) 将数组的指针指向数组最后一个元素。
reset([array]) 将数组的指针指向数组的第一个元素。
3.数组的相关处理函数
array_values() 返回一个包含数组中所有的值的索引数组。
array_key([array],[mixed],[,bool]) 返回一个包含数组中所有的键的索引数组,还可以以通过第二个字符串型参数获取指定值的键数组,通过第三个参数设置是否要类型也要相同
in_array([mixed],[array],[,bool]) 在一个数组中查询是否存在指定值的元素,[mixed]搜索的值,[array]搜索的数组 [bool]是否严格,即是否数据类型也要相同才算。存在返回true,不存在返回false
array_search() 同上
array_key_exists([mixed],[array]) 查询数组中是否存在键,此处不用虑键的类型如 是 1 还是'1'是因为在php数组中键是唯一的也就是说 对于数组的键而言 1和'1'是等价的。
array_flip([array]) 将输入数组中的键与值翻转变为一个新的数组。并不是改变原数组。
array_reverse([array]) 将数组中元素翻转。创建新的数组返回。
count([array],[,int]) 计算数组元素的个数 第二个可选参数[,int] 的值可以为 0表示不检测多维,1表示监测多维。
array_count_values() 统计数组中所有值出现的次数,返回一个 原数组的值=>出现的次数 这样的键值对数组。
array_unique() 删除数组中重复的的值,返回没有重复值的新数组。
array_filter([array],[,callback callback]) 通过回调函数过滤数组中的元素。
array_walk([array],[callback function],[mixed]) 将数组中的元素交给回调函数处理。
array_map() 可以处理多个数组。
拆分,合并,分解和接合
array_slice([array],[int offset],[,int lenght],[,bool preserve_keys]) 从数组中指定位置取出指定长度,lenght表示取出的个数,offset为负数时表示从数组末端开始取,preserve_keys表示是否保留原键名,默认false。
array_splice([&array],[int offset],[,int length],[,array replacement]) 删除选择的元素,并且可以用指定的元素替代。
array_combine([array key],[array value]) 通过合并两个数组来创建一个新的数组,一个是键的数组,一个是值的数组,所以两个数组的长度必须一致
array_merge([array].....) 将多个数组直接合并成一个新的数组。
array_intersect([array][array]...) 返回两个或两个数组中重合的部分
array_diff([array][array]...) 返回两个或两个数组中不重合的部分
数据结构:由于php是弱类型语言且数组可自动收缩,相当于数据结构中的容器。所有不必像其他语言那样再去定义容器,直接使用一些定义的函数就可以完成数据处理。。
堆栈:先进后出
array_push([&array],[mixed].....) 在指定数组尾部按顺序添加一个或多个元素。返回新数组的长度。
array_pop([&array]) 删除数组中的最后一个元素,并将数组的长度减1,返回弹出的元素或者空数组时返回null
队列:先进先出
array_push() 负责在队尾添加元素
array_shift([&array]) 删除队首的元素,返回该元素,为空返回null
特殊函数
array_rand([array],[,int num]) 从指定的数组中随机选出指定个键。
shuffle([array]) 将数组中的元素随机打乱。
array_sum([array]) 将数组中的所有值求和
range([mixed first],[mixed second],[,number step]) 创建并返回指定范围内的的元素的数组。