博客列表 >数组中的常用API

数组中的常用API

风车
风车原创
2022年08月15日 13:02:02441浏览

数组常用api

演示数组

  1. $stu = ['id' => 1, 'name' => 'Jack', 'course' => 'php', 'score' => 90];

key() : 当前键名
current(): 当前值

  1. printf('[ %s ] => %s<br>', key($stu), current($stu));

next(): 指针前移
将当前获取的的目标变成后面一个 比如上一段代码获取了第一个,使用next之后会获取第二个

  1. next($stu);
  2. printf('[ %s ] => %s<br>', key($stu), current($stu));

prev(): 指针后移
将当前获取的的目标变成前面一个

  1. prev($stu);
  2. printf('[ %s ] => %s<br>', key($stu), current($stu));

reset(): 指针重置,指向第一个

  1. reset($stu);
  2. printf('[ %s ] => %s<br>', key($stu), current($stu));

end(): 指针指向最后一个

  1. end($stu);
  2. printf('[ %s ] => %s<hr>', key($stu), current($stu));

foreach 遍历数组
语法:foreach(当前数组名 as 健名=>对应的值){执行方法}

  1. foreach ($stu as $key=>$value) {
  2. printf('[ %s ] => %s<br>', $key, $value);
  3. }

数组解构

在PHP中,有一个list 用来解构数组
1.索引数组解构

  1. list($name, $price) =['手机', 5000];
  2. echo $name, ', ', $price , '<br>';

2.关联数组解构

  1. list('name'=>$name, 'price'=>$price) =['name'=>'电脑','price'=> 9000];
  2. echo $name, ', ', $price , '<br>';

小案例

  1. $users = [
  2. ['id' => 5, 'name' => 'Mike'],
  3. ['id' => 8, 'name' => 'John'],
  4. ['id' => 14, 'name' => 'Jerry'],
  5. ];
  6. foreach ($users as list('id'=>$id, 'name'=>$name)) {
  7. printf('id = %s, name = %s<br>', $id, $name);
  8. }

与值相关的api

array_values(): 将数组的值,组成一个新数组,键名会重置

  1. $arr = [0=>1, 2=>88, 3=>'10js', 10=>'1js', 6=>88];
  2. printf('<pre>%s</pre>', print_r(array_values($arr), true));

in_array(查询元素,查询数组): 查询某个元素是否在这个数组中, true/ false

  1. echo(in_array('php', $arr) ? '有' : '没有');

array_search(查询元素,查询数组) :查询某个元素是否在这个数组中,如果在则返回当前元素的索引

  1. $key = array_search('js', $arr);
  2. echo $key, ', ', $arr[$key];

array_unique(): 去掉数组中重复的元素

  1. $arr = [0=>1, 2=>88, 3=>'10js', 10=>'1js', 6=>88];
  2. @print_r(array_unique($arr));

count($arr) 当前数组的元素数量/获取当前数组长度

  1. echo count($arr)

array_count_values(),统计数组每个值的出现频率

  1. print_r(array_count_values($arr), true)

array_sum($arr) 求和’
返回当前数组所有数值的和(字符串视为0)

  1. array_sum($arr)

array_product($arr) 求积
返回当前所有数值相乘的积,如果有字符串则会返回0

  1. array_product($arr)

栈操作

栈操作: 成员的增删,只允许在数组的一端进行
和JS一样的操作
push() 尾部增加
pop() 尾部删除
unshift()头部增加
shift() 头部删除
这个也可以进行循环队列的操作(JS轮播图的操作)
尾部追加, 头部删除

  1. array_push(), array_shift()

头部追加, 尾部删除

  1. array_unshift(), array_pop()

排序

1.值排序

  1. sort($arr):升序(会重置键名)
  2. asort($arr):值升序排序,但是保持键名
  3. rsort($arr);降序(会重置键名)
  4. arsort($arr);值降序排序,但是保持键名

2.键排序

  1. ksort($arr); 正排序
  2. krsort($arr);反排序

3.冒泡排序
usort(目标数组,回调函数)

  1. usort($arr, function ($a, $b) {
  2. // return $a - $b;
  3. // 降序
  4. return $b - $a;
  5. });

4.shuffle($arr); 随机打乱数组

查询与替换

  1. $stu = [
  2. 'id' => 101,
  3. 'name' => '无忌',
  4. 'age' => 20,
  5. 'course' => 'php',
  6. 'grade' => 80
  7. ];

array_slice() 取出一部分成员组成一个新数组
三个参数:目标数组,起始索引,取值数量(从起始索引开始取x个值)

  1. $res = array_slice(
  2. $stu,
  3. -4,
  4. 3
  5. );

array_splice(): 增删改
删除(这个函数默认就是删除)
三个参数:目标数组,起始索引,删除数量

  1. $res=array_splice($arr, 1, 2);

替换
四个参数:目标数组,起始索引,删除数量,删除几个就补上几个(直接用数组添加进去)

  1. $res=array_splice($arr, 1, 2, [666,999]);

增加
增加就是将替换的第三个参数,删除数量改为0 ,然后直接添加参数,因为没有删除东西,所以新数组会直接在起始索引的地方追加进去

  1. $res=array_splice($arr, 1, 0, [666,999]);

数组的回调

  1. $arr = [
  2. 150,
  3. 'php',
  4. true,
  5. [4, 5, 6],
  6. (new class () {
  7. }),
  8. [],
  9. null,
  10. false,
  11. '',
  12. 0,
  13. '0'
  14. ];

array_filter(),只返回数组中为true的元素组成的数组
一半只需要第一个参数,就是直接写入目标数组名就可以,第二个参数是一个函数,不用写,如果需要对返回的值进行二次过滤就通过第个参数,传入一个函数进行二次过滤,并且还可以再次调用进行多次过滤

  1. $res = array_filter($arr, function ($item) {
  2. // return $item;
  3. // 只返回标量/基本数据类型
  4. return is_scalar($item);
  5. });

array_map() 对每个成员 ,做回调处理,返回新数组
这个参数会会将所有元素 拉平并返回新数组
拉平可以理解为将里面所有元素全部处理成字符串,如果有函数的话会直接将返回值输出成新数组的一个元素

  1. $arr = [
  2. 'php',
  3. [3, 4, 5],
  4. (new class () {
  5. public string $name = '电脑';
  6. public int $price = 8888;
  7. }),
  8. 15,
  9. 20
  10. ];

array_reduce(): 迭代/归并处理函数
语法:
有三个参数,第一个是目标数组,第二个是一个回调函数,这个回调函数也有两个值(累加结果,当前值)第三个是 运行基数(从几开始)
$res = array_reduce($arr, function ($acc, $cur) {}

  1. $arr = [1,2,3,4,5,6];
  2. $res = array_reduce($arr, function ($acc, $cur) {
  3. echo $acc, ', ' , $cur, '<br>';
  4. return $acc + $cur;
  5. }, 10);

array_walk(): 使用自定义函数进行回调处理,返回布尔值
语法
array_walk(数组, 回调,回调的第三个数组的默认值)

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议