Blogger Information
Blog 29
fans 1
comment 0
visits 14794
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
数组中的常用API
风车
Original
433 people have browsed it

数组常用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(数组, 回调,回调的第三个数组的默认值)

Correcting teacher:PHPzPHPz

Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post