PHP函数大全(数组)

PHP常用函数大全之数组函数

前情提要:本篇文章出现的数组函数全部经过手敲验证,后续会一直更新,感谢支持!
注意:echo,print_r,var_dump等是用来查看返回值和结果的,数组函数在其后或其内

一.键值操作类

①自定义数组:

$a = ['1','2','6','w','a' => 'q'];
$b = [['1','2'],['6','w'],['a' => 'q']];

②验证与返回值:

1. 检索给定的键名是否存在数组中
echo isset($a['a']);    //返回1

2.返回数组的值
print_r(array_values($a));    //Array([0]=>1 [1]=>2 [2]=>6 [3]=>w [4]=>q)

3.返回数组的键名
print_r(array_keys($a));    //Array([0]=>0 [1]=>1 [2]=>2 [3]=>3 [4]=>a)

4.在数组中搜索,若存在则返回其键名,不存在返回false
echo array_search('w',$a);    //返回3

5.判断某个值是否在数组中,在返回真,不在返回假
var_dump(in_array('7',$a));  //bool(false)

6.判断是否为数组,是返回真,不是返回假
var_dump(is_array($a));     //bool(true)

7.判断数组是否有某个键名,是返回真,不是返回假
var_dump(array_key_exists('a', $a));   //bool(true)

8.交换数组的键和值,返回新的数组,存在覆盖
print_r(array_flip($c));     //Array ( [2] => 1 [w] => b [q] => a )

9.数组顺序反转,保留索引关系
print_r(array_reverse($a, true));     //Array([a]=>q [3]=>w [2]=>6 [1]=>2 [0]=>1)
10.数组顺序反转,不保留索引关系
print_r(array_reverse($a, false));     //Array([a]=>q [0]=>w [1]=>6 [2]=>2 [3]=>1)

11.返回数组(多维数组)中某个单一列的值
print_r(array_column($b,0));     //Array([0]=>1 [1]=>6)
print_r(array_column($b,'a'));     //Array ( [0] => q )

二.元素个数和唯一性

①自定义数组:

$c = ['2','2','w','a' => 'q','w','b' => 'w'];

②验证与返回值:

1.去除数组的重复值
print_r(array_unique($c));    //Array([0]=>2 [2]=>w [a]=>q)

2.统计数组值出现的次数,返回数组的KEY为原来数组的值,VALUE为值出现的次数
print_r(array_count_values($c));    //Array([2]=>2 [w]=>3 [q]=>1)

3.统计数组个数
print_r(count($c));    //返回6
print_r(sizeof($c));    //返回6

4.统计数组个数,参数"1"表示统计多维数组开启,默认0为关闭
print_r(count($b,1));    //返回8($b为一维+二维:8=3+5)
print_r(sizeof($b,1));    //同上

三.数组的拆分,合并,分解,接合

①自定义数组:

$d = ['1','w','a' => 'q'];
$e = ['4','d','s' => 'b'];
$f = ['a' => 'b'];

②验证与返回值:

1.截取数组,参数2从下标几开始,参数3取几个
print_r(array_slice($a,1,4));    //Array([0]=>2 [1]=>6 [2]=>w [a]=>q)

2.截取数组,并用给定数组替换;若参数30,是从第几个下标开始插入给定数组
array_splice($a,1,2,['s'=>'b']); print_r($a);    //Array([0]=>1 [1]=>b [2]=>w [a]=>q)
array_splice($a,1,0,['s'=>'b']); print_r($a);    //Array([0]=>1 [1]=>b [2]=>b [3]=>w [a]=>q)

3.合并俩数组,返回新数组(第一个数组值为键,第二个数组值为值)
print_r(array_combine($d,$e));    //Array([1]=>4 [w]=>d [q]=>b)

4.合并俩数组,返回新数组(若下标为数字不覆盖)
print_r(array_merge($d,$e));    //Array([0]=>1 [1]=>w [a]=>q [2]=>4 [3]=>d [s]=>b)
5.合并俩数组,返回新数组(若下标为字符且相同的,后面覆盖前面)
print_r(array_merge($d,$f));    //Array([0]=>1 [1]=>w [a]=>b)
6.合并俩数组,返回新数组(只要下标相同的,前面覆盖后面)
print_r($d+$e);    //Array([0]=>1 [1]=>w [a]=>q [s]=>b)

7.用于比较两个(或更多个)数组的键值,并返回交集,保留索引关系
print_r(array_intersect($a,$d));    //Array( [0] => 1 [3] => w [a] => q )
print_r(array_intersect($d,$a));    //Array( [0] => 1 [1] => w [a] => q )

8.用于比较两个(或更多个)数组的值,并返回差集,保留索引关系
print_r(array_diff($d,$f));    //Array ( [0] => 1 [1] => w [a] => q )
print_r(array_diff($f,$d));    //Array ( [a] => b )

9.分割数组,返回一个二维数组,参数2为每个数组个数
print_r(array_chunk($d,2));    //Array([0]=>Array([0]=>1 [1]=>w) [1]=>Array([0]=>q))

10.将指定数量的带有指定值的元素插入到数组中,第二个参数为正在后边填充,为负在前边填充
print_r(array_pad($f,3,'php'));    //Array ( [a] => b [0] => php [1] => php )
print_r(array_pad($f,-3,'php'));    //Array ( [0] => php [1] => php [a] => b )

四.数组的数据结构(栈:后进先出;队列:先进先出)

①自定义数组:

$g = ['a'];
$h = ['1','s','6','w','a' => 'q'];

②验证与返回值:

1.元素进队列
array_unshift($g,'b');print_r($g);    //Array([0]=>b [1]=>a)
2.元素出队列
array_shift($g);print_r($g);    //Array([0]=>a)
3.元素进栈
array_push($g,'b');print_r($g);    //Array([0]=>a [1]=>b)
4.元素出栈
array_pop($g);print_r($g);    //Array([0]=>a)

5.指针指向下一个单元
print_r(next($h));    // s
6.指针指向上一个单元
print_r(prev($h));    // 1
7.指针回归到开头
print_r(reset($h));    // 1
8.指针指向最后
print_r(end($h));    // q
9.返回数组中的当前单元,比如是关联数组是不知道下标,可以输出当前数组的办法解决
print_r(current($h));    // q
print_r(pos($h));    // q
10.返回当前指针指向元素的键值
print_r(key($h));    // a

11.销毁或释放次数组
unset($h);

五.排序函数

①自定义数组:

$sort = ['1','3','w','s','2','a' => 'q'];

②验证与返回值:

通过元素值对数组排序
1.由小到大的顺序排序(第二个参数为按什么方式排序),忽略键名的数组排序
sort($sort );print_r($sort);    //Array ( [0] => 1 [1] => 2 [2] => 3 [3] => q [4] => s [5] => w )
2.由大到小的顺序排序(第二个参数为按什么方式排序),忽略键名的数组排序
rsort($sort );print_r($sort);    //Array ( [0] => w [1] => s [2] => q [3] => 3 [4] => 2 [5] => 1 )
3.使用用户自定义的比较函数对数组中的值进行排序(function中有两个参数,0表示相等,正数表示第一个大于第二个,负数表示第一个小于第二个),忽略键名的数组排序
usort($sort ,function);
4.由小到大的顺序排序(第二个参数为按什么方式排序),保留键名的数组排序
asort($sort );print_r($sort);    //Array ( [0] => 1 [4] => 2 [1] => 3 [a] => q [3] => s [2] => w )
5.由大到小的顺序排序(第二个参数为按什么方式排序),保留键名的数组排序
arsort($sort );print_r($sort);    //Array ( [2] => w [3] => s [a] => q [1] => 3 [4] => 2 [0] => 1 )
6.使用用户自定义的比较函数对数组中的值进行排序(function中有两个参数,0表示相等,正数表示第一个大于第二个,负数表示第一个小于第二个),保留键名的数组排序
uasort($sort ,function);

通过键名对数组排序
7.按照键名正序排序
ksort($sort );print_r($sort);    //Array ( [0] => 1 [a] => q [1] => 3 [2] => w [3] => s [4] => 2 )
8.按照键名逆序排序
krsort($sort );print_r($sort);    //Array ( [4] => 2 [3] => s [2] => w [1] => 3 [0] => 1 [a] => q )
9.使用用户自定义的比较函数对数组中的键名进行排序(function中有两个参数,0表示相等,正数表示第一个大于第二个,负数表示第一个小于第二个)
uksort($sort ,function);

自然排序法排序
10.自然排序(忽略键名)
natsort($sort );print_r($sort);    //Array ( [0] => 1 [4] => 2 [1] => 3 [a] => q [3] => s [2] => w )
11.自然排序(忽略大小写和键名)
natcasesort($sort );print_r($sort);    //Array ( [0] => 1 [4] => 2 [1] => 3 [a] => q [3] => s [2] => w )

六.其他数组

①自定义数组:

$i = ['1','s','b','a' => 'q'];
$j = ['1','2','a','s' => '4'];
$k = ['id'=>'1','b'=>'2','s' => 'b'];

②验证与返回值:

1.快速创建0,5的数组,返回新索引数组
print_r(range(0,5));    //Array([0]=>0 [1]=>1 [2]=>2 [3]=>3 [4]=>4 [5]=>5)
2.第三个参数为步进值,假设为2,就有3个值
print_r(range(0,5,2));    //Array([0]=>0 [1]=>2 [2]=>4)

3.随机返回数组当中的下标key,返回值为值
print_r(array_rand($i));    //0或1或2或a
4.随机返回数组当中的下标key,第二个参数为返回的个数,返回值为数组
print_r(array_rand($i,2));    //可能为Array([0]=>1 [1]=>a)

5.返回数组的值的和
print_r(array_sum($j));    //返回7(7=1+2+4)

6.打乱数组顺序,删除原有下标,返回索引数组(即不保留索引关系)
shuffle($j);print_r($j);    //Array([0]=>2 [1]=>1 [2]=>4 [3]=>a)

7.把关联数组转换成一个经过urlencode加密的URL
print_r(http_build_query($k));  //id=1&b=2&s=b

8.将值(b)赋给键(s)的变量
extract($k);echo $s;   // b

9.把数组中的值赋给list中的变量(关联键的不会赋值,如下:$dd为空)
list($aa, $bb, $cc,$dd) = $i ;
echo "$aa,$bb,$cc,$dd";   //1,s,b,

10.创建一个包含变量名和它们的值的数组
$a = 'aa';
$b = 'bb';
print_r(compact("a", "b"));    //Array ( [a] => aa [b] => bb )

你可能感兴趣的:(PHP)