$arr= array('one'=>'1', 'two'=>'2', 'three'=>'3'); $keys= array_keys($arr); var_dump($keys); //array(3) {[0]=> string(3) "one" [1]=> string(3) "two" [2]=>string(5) "three" }
获取数组值:
array_values()函数返回一个数组中的所有值,并自动为返回的数组提供数组索引,其形式如下:
$arr= array('one'=>'1', 'two'=>'2', 'three'=>'3'); $values= array_values($arr); var_dump($values); //array(3) {[0]=> string(1) "1" [1]=> string(1) "2" [2]=>string(1) "3" }
遍历数组
通常需要遍历数组并获得各个键或值(或者同时获得键和值),PHP提供了一些函数来满足需求。许多函数能完成两项任务,不仅能获取当前指针位置的键或值,还能将指针移向下一个适当的位置。
获取当前数组键:
key()函数返回数组中当前指针所在位置的键,其形式如下:
$arr= array('one'=>'1', 'two'=>'2', 'three'=>'3'); $key= key($arr); var_dump($key); //string(3) "one"
注意:每次调用key()时不会移动指针。
获取当前数组值:
current()函数返回数组中当前指针所在位置的数组值。其形式如下:
$arr= array('one'=>'1', 'two'=>'2', 'three'=>'3'); $value= current($arr); var_dump($value); //string(1)“1”
获取当前数组键和值:
each()函数返回数组的当前键/值对,并将指针推进一个位置,其形式如下:
$arr =array('one'=>'1', 'two'=>'2', 'three'=>'3'); var_dump(each($arr)); //array(4) {[1]=> string(1) "1" ["value"]=> string(1)"1" [0]=> string(3) "one" ["key"]=>string(3) "one" }
返回的数组包含4个键,键0和key键包含键名,而键1和value包含相应的数据。如果执行each()前指针位于数组末尾,则返回FALSE。
移动数组指针:
1) 将指针移动到下一个数组位置
next()函数返回紧接着放在当前数组指针下一个位置的数组值,如果指针本来就位于数组的最后一个位置,则返回FALSE
$arr= array('one'=>'1', 'two'=>'2', 'three'=>'3'); echo next($arr); //输出2 echo next($arr); //输出3
2) 将指针移动到前一个数组位置
prev()函数返回位于当前指针前一个位置的数组值,如果指针本来就位于数组的第一个位置,则返回FALSE
3) 将指针移动到第一个数组位置
reset()函数用于将数组指针设置回数组的开始位置,如果需要在脚本中多次查看或处理一个数组,经常使用这个函数,另外这个函数还经常在排序结束时使用。
4) 将指针移动到最后一个数组位置
end()函数将指针移动到数组的最后一个位置,并返回最后一个元素。
向函数传递数组值:
array_walk()函数将数组中的各个元素传递到用户自定义函数。如果需要对各个数组元素完成某个特定动作,这个函数将起作用。其形式如下:
functiontest($value ,$key){ echo$value.' '.$key." "; } $arr= array('one'=>'1', 'two'=>'2', 'three'=>'3'); array_walk($arr,'test'); //1 one //2 two //3 three
如果使用多维数组,PHP5中引入的array_walk_recursive()函数可以递归地对数组中的每一个元素应用一个用户定义函数。
确定数组大小和元素唯一性
确定数组的大小:
count()函数返回数组中值的总数
如果启动了可选的mode参数(设置为1),数组将进行递归计数统计元素。count(array(), 1);
注意:sizeof()函数是count()的别名。功能一致。
统计数组元素出现的频率:
array_count_values()函数返回一个包含关联键/值对的数组,其形式如下:
$arr= array('A', 'B', 'C', 'A'); $res= array_count_values($arr); print_r($res); //Array( [A] => 2 [B] => 1 [C] => 1 )
值表示出现的频率。
确定唯一的数组元素:
array_unique()函数会删除数组中所有重复的值,返回一个由唯一值组成的数组,其形式如下:
$arr= array('A', 'B', 'C', 'A'); $res= array_unique($arr); print_r($res); //Array( [0] => A [1] => B [2] => C )
可选参数sort_flags(PHP5.2.9中新增)可以确定如何对数组键排序。默认地,值会被作为字符串排序,不过也可以按数值对值排序(SORT_NUMERIC),或使用PHP默认的排序方法(SORT_REGULAR),还可以根据本地化环境排序(SORT_LOCALE_STRING)。
数组排序
逆置数组元素排序:
array_reverse()函数将数组中元素的顺序逆置,其形式如下:
$arr= array('A', 'B', 'C'); $res= array_reverse($arr); print_r($res); //Array( [0] => C [1] => B [2] => A )
如果可选参数preserve_keys设置为TRUE,则保持键映射,否则重新摆放后的各个值将对应于先前该位置上的相应键。
$arr= array('A', 'B', 'C'); $res= array_reverse($arr, true); print_r($res); //Array( [2] => C [1] => B [0] => A )
置换数组键和值:
array_flip()函数将置换数组中键及其相应值的角色,其形式如下:
$arr= array('A', 'B', 'C'); $res= array_flip($arr); print_r($res); //Array( [A] => 0 [B] => 1 [C] => 2 )
数组排序:
sort()函数对数组进行排序,各元素按值由低到高的顺序排列,其形式如下: