PHP数组函数分类整理

2017-09-13 12:22:13来源:CSDN作者:gscsdlz人点击

分享

PHP数组函数分类整理

array_change_key_case

array array_change_key_case( array $array[, int $case = CASE_LOWER ] )

将数组中所有键名(key)修改为大写或者小写,默认为小写。

var_dump(array_change_key_case([   'abc' => 1,    'aBC' => 1,    '12C' => 1,    '123' => 1,]));/*array (size=3)  'abc' => int 1  '12c' => int 1  123 => int 1*/

这个函数对数字没有作用。如果键名中混用数字字符,也会全部转为小写。

array_chunk

array array_chunk(array $input, $size, $preserve_keys = null)

将一个数组分成小块,每个块的大小通过$size指定,如果设置了$preserve_keys为true,那么在每个块中会保留键的原始值,否则新的数组中从0开始重新分配键。也就是把关联数组改为索引数组
默认值为false也就是不保留键,在使用函数的时候一定要注意,数组的键是否很重要,如果重要一定要记得保留。

var_dump(array_chunk(['a'=>1,2,3,4,5,6,7,8,9], 4));/*array (size=3)  0 =>     array (size=4)      0 => int 1      1 => int 2      2 => int 3      3 => int 4  1 =>     array (size=4)      0 => int 5      1 => int 6      2 => int 7      3 => int 8  2 =>     array (size=1)      0 => int 9*/var_dump(array_chunk(['a'=>1,2,3,4,'b'=>5,6,7,8,9], 4, true));/*array (size=3)  0 =>     array (size=4)      'a' => int 1      0 => int 2      1 => int 3      2 => int 4  1 =>     array (size=4)      'b' => int 5      3 => int 6      4 => int 7      5 => int 8  2 =>     array (size=1)      6 => int 9*/

分成小块以后,除了最后一块以外,其余的大小应该等于$size,另外形成的小块数组使用数字索引的时候,如果没有保留键名,那么每个小块数组中会同时从0开始重新分配,但是如果设置了不保留,整个数字索引的分配的顺序增长的,详细见输出

array_column

array_combine

array_count_values

array_diff_assoc

array_diff_key

array_diff_uassoc

array_diff_ukey

array_diff

array_fill_keys

array_fill

array_filter

array_flip

array_intersect_assoc

array_intersect_key

array_intersect_uassoc

array_intersect_ukey

array_intersect

array_key_exists

array_keys

array_map

array_merge_recursive

array_merge

array_multisort

array_pad

array_pop

array_product

array_push

array_rand

array_reduce

array_replace_recursive

array_replace

array_reverse

array_search

array_shift

array_slice

array_splice

array_sum

array_udiff_assoc

array_udiff_uassoc

array_udiff

array_uintersect_assoc

array_uintersect_uassoc

array_uintersect

array_unique

array_unshift

array_values

array_walk_recursive

array_walk

array

compact

count

current

each

end

extract

in_array

key_exists

key

list

natcasesort

natsort

next

pos

prev

range

reset

shuffle

sizeof

排序相关

排序基本上按照键排序,值排序,升序降序,用户自定义函数排序
r表示reverse,逆序
a表示association,按值
k表示key,按键
u表示user,用户自定义排序方式
除了u开头的函数能够自由调整排序方式,其余的函数如果需要逆序都需要使用带r的函数。

sort

对数组排序,返回从低到高的数组,通过引用传递数组,排序完成后的返回值仅仅是true或false表示是否排序成功。
可以通过第二参数传递选项,选项一般控制了进行比较的规则,尤其是数字和字符串的比较。
例如'123'应该按照123来排序,还是'123',可以通过选项控制。
排序后不保留键

$arr_assoc = array(    'a' => 2,    'c' => 1,    'b' => 3,    'e' => 4,    'd' => 5);sort($arr_assoc);/*array (size=5)  0 => int 1  1 => int 2  2 => int 3  3 => int 4  4 => int 5*/

rsort

同sort,只是从大到小排序。

ksort

同sort,该函数保留键,按照键排序

asort

该函数按照值排序,保留键

krsort

同ksort,按照从大到小排序

arsort

同asort,按照从大到小排序

usort

用户自定义排序函数,第一个参数是数组的引用,第二个参数是一个回调函数,参数有两个。分别是比较对象的第一个和第二个。
该回调函数,应该返回一个小于、等于、大于0的整数,如果返回了浮点数,将被强制转换为intege
例如:

$arr_assoc = array(    'a' => 2,    'c' => 1,    'b' => 3,    'e' => 4,    'd' => 5);usort($arr_assoc, function($a, $b){   // return $a < $b;    return ($a < $b) ? 1 : -1;});

排序时return $a < $b;怎么知道排序方向?简单技巧,当$a < $b时,返回true,表示需要交换,那么小的值就会放在后面,也就是从大到小。
该函数不保留键。

uasort

同usort,对值进行排序,保留键

uksort

同usort,对键进行排序,保留键
如果一个数组中的某一项是由数组构成的,也就是多维数组
除了usort,uksort,uasort以外,剩余的排序函数排序时会显得力不从心,一般来说默认以多维数组的第一项排序
例如:

$arr_assoc = array(    [        'sex' => 'male',        'name' => 'andy',        'age' => 17,    ],    [        'name' => 'bob',        'age' => 18,    ],    [        'name' => 'cindy',        'age' => 19,    ]);sort($arr_assoc);/*array (size=3)  0 =>     array (size=2)      'name' => string 'bob' (length=3)      'age' => int 18  1 =>     array (size=2)      'name' => string 'cindy' (length=5)      'age' => int 19  2 =>     array (size=3)      'sex' => string 'male' (length=4)      'name' => string 'andy' (length=4)      'age' => int 17*/

默认按照第一个值排序,而不是统一使用’name’排序。而且还可以发现sort并没有取消下一层的键。
如果需要对类似这种数组排序,应该使用自定义函数处理:

usort($arr_assoc, function($a, $b){    return $a['age'] > $b['age'];});//按年龄升序

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台