Blogger Information
Blog 46
fans 2
comment 0
visits 19479
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
数组常用api
P粉314265155
Original
318 people have browsed it

数组api 获取键与值

  1. <?php
  2. namespace _0811;
  3. // 注意箭头函数后面有空格
  4. $stu = ['id'=> 1 , 'name'=> '小狗' , 'score' => 89];
  5. // key():键名
  6. // current() 当前值
  7. printf( '[%s] =>%s<br>',key($stu),current($stu));
  8. // printf( '[%s] =>%s<br>',key($stu),current($stu));
  9. // 数组指针后移
  10. // next($stu);
  11. // next($stu);
  12. // printf( '[%s] =>%s<br>',key($stu),current($stu));
  13. next($stu);
  14. printf('[ %s ] => %s<br>', key($stu), current($stu));
  15. next($stu);
  16. printf('[ %s ] => %s<br>', key($stu), current($stu));
  17. // next($stu);
  18. // printf('[ %s ] => %s<br>', key($stu), current($stu));
  19. // prev()指针后移
  20. prev($stu);
  21. printf('[ %s ] => %s<br>', key($stu), current($stu));
  22. //reset()指针重置 指向第一个
  23. reset($stu);
  24. printf('[ %s ] => %s<br>', key($stu), current($stu));
  25. //end()指针 指向第最后一个
  26. end($stu);
  27. printf('[ %s ] => %s<br>', key($stu), current($stu));
  28. // 自动操作
  29. // for foreach
  30. echo '<hr>';
  31. reset($stu);
  32. if (count($stu)>0){
  33. while(true){
  34. printf('[ %s ] => %s<br>', key($stu), current($stu));
  35. if(next($stu)){
  36. continue;
  37. }else{
  38. break;
  39. }
  40. }
  41. }else {
  42. echo '空';
  43. }
  44. echo '<hr>';
  45. // foreach 简化
  46. reset($stu);
  47. foreach ($stu as $key=>$value){
  48. printf('[ %s ] => %s<br>', $key, $value);
  49. }
  50. echo '<hr>';
  51. // 解构、
  52. // list( )
  53. // 索引数组解构
  54. list ($name,$price) =['手机',5000];
  55. echo $name ,',' ,$price;
  56. echo $name, $price;
  57. // 关联数组
  58. // 模板
  59. echo '<hr>';
  60. // 注意索引必须一致 ,对象可以不一样,但是建议一样
  61. list('name'=>$a, 'price'=>$b) =['name'=>'电脑','price'=> 9000];
  62. echo $a, $b;
  63. echo '<hr>';
  64. // 框架使用 extract 模板赋值 方便
  65. extract(['name'=>'相机','price'=> 19000]);
  66. echo $name, $price;
  67. echo '<hr>';
  68. // foreach + list解构
  69. // 用二维数组来模拟数据表查询结果
  70. $users = [
  71. ['id' => 5, 'name' => '小麦'],
  72. ['id' => 8, 'name' => '小狗'],
  73. ['id' => 14, 'name' => '小猫'],
  74. ];
  75. foreach($users as $uer){
  76. print_r($uer).'<br>';
  77. vprintf('id=%s,name=%s',$uer);
  78. }
  79. echo '<hr>';
  80. // list('id'=>$id, 'name'=>$name) =['id'=>'5','name'=> '小麦'];
  81. foreach($users as list('id'=>$id, 'name'=>$name)){
  82. printf('id=%s,name=%s<br>',$id,$name);
  83. }

数组api 键的查询;值的去重、求和、求积

  1. <?php
  2. namespace _0811;
  3. // 与值相关
  4. // array values () 将数组的值。组成一个新数组 键名会重置
  5. $arr = [0=>1, 5=>88, 3=>'js', 2=>'php', 6=>98];
  6. // 增删改查后 键名会乱掉
  7. printf('<pre>%s</pre>',print_r($arr,true));
  8. print_r(array_values($arr));
  9. printf('<pre>%s</pre>',print_r(array_values($arr)),true);
  10. echo '<hr>';
  11. // in_array()查询 某个元素是否在这个数组内 返回布尔值 true false
  12. echo(in_array('ph',$arr)?'找到了':'没有');
  13. echo '<hr>';
  14. // array_search() 查询 键
  15. $key = array_search('js',$arr);
  16. echo $key;
  17. echo '<hr>';
  18. // array_unique( ) 去重 后返回新数组
  19. // @ 去掉报错
  20. print_r( array_unique($arr));
  21. echo '<hr>';
  22. printf('<pre>%s</pre>',print_r(array_unique($arr)),true);
  23. echo '<hr>';
  24. // count( ) 统计当前数组数量
  25. echo count($arr);
  26. // array_count_values(),统计某个值的出现频率
  27. $arr = [0=>1, 5=>88, 3=>'js', 2=>'php', 6=>88];
  28. printf('<pre>%s</pre>', print_r(array_count_values($arr), true));
  29. echo array_sum($arr);
  30. echo '<hr>';
  31. // 计算求值操作 array_sum 字符串 不被计算在内 当数字+字符串组成 只算数组 字符串忽略
  32. $arr = [0=>1, 5=>88, 3=>'10js', 2=>'php', 6=>88];
  33. echo array_sum($arr);
  34. echo '<hr>';
  35. // 求乘积 字符串 就是解析为 0 加法 可以乘法就出错了
  36. echo array_product($arr) . '<br>';
  37. echo '<hr>';
  38. $arr = [0=>1, 5=>88, 3=>'10js', 2=>'1php', 6=>88];
  39. echo array_product($arr) . '<br>';

数组api 值的队列

  1. <?php
  2. namespace _0811;
  3. // 栈操作: 成员的增删,只允许在数组的一端进行
  4. // 本质上是增删受限的操作
  5. // push()尾部追加 pop()尾部删除 js php 前面加array_
  6. $arr = [];
  7. echo array_push($arr,10,20,30);
  8. echo '<hr>';
  9. print_r( $arr);
  10. echo '<hr>';
  11. print_r( array_push($arr,40,50,60));
  12. echo '<hr>';
  13. print_r( $arr);
  14. echo '<hr>';
  15. echo array_pop($arr);
  16. echo '<hr>';
  17. print_r( $arr);
  18. // unshift()头部追加 shift()头部删除 js php 前面加array_
  19. echo '<hr>';
  20. echo array_unshift($arr);
  21. echo '<hr>';
  22. echo array_unshift($arr,90,80);
  23. echo '<hr>';
  24. print_r( $arr);
  25. echo '<hr>';
  26. echo array_unshift($arr,70);
  27. echo '<hr>';
  28. print_r( $arr);
  29. echo '<hr>';
  30. echo array_shift($arr);
  31. echo '<hr>';
  32. print_r( $arr);
  33. echo '<hr>';
  34. // 队列:
  35. // 1. 尾部追加, 头部删除
  36. // array_push(), array_shift()
  37. echo array_push($arr,110);
  38. print_r( $arr);
  39. echo '<hr>';
  40. echo array_shift($arr);
  41. echo '<hr>';
  42. print_r( $arr);
  43. // 2. 头部追加, 尾部删除
  44. // array_unshift(), array_pop()
  45. echo '<hr>';
  46. echo array_unshift($arr,120);
  47. print_r( $arr);
  48. echo '<hr>';
  49. echo array_pop($arr);
  50. echo '<hr>';
  51. print_r( $arr);

数组api 值的排序

  1. <?php
  2. namespace _0811;
  3. $arr = [30, 4, 82, 15, 20, 'abc', 'hello', 2, 46];
  4. printf('<pre>%s</pre>', print_r($arr, true));
  5. echo '<hr>';
  6. // 排序
  7. // 1. 值排序
  8. // 升序 默认按照ASCII码 键重置
  9. sort($arr);
  10. printf('<pre>%s</pre>', print_r($arr, true));
  11. echo '<hr>';
  12. // 升序 键名不重置
  13. $arr = [30, 4, 82, 15, 20, 'abc', 'hello', 2, 46];
  14. asort($arr);
  15. printf('<pre>%s</pre>', print_r($arr, true));
  16. echo '<hr>';
  17. // 降序 键重置
  18. rsort($arr);
  19. printf('<pre>%s</pre>', print_r($arr, true));
  20. echo '<hr>';
  21. // 降序 键不重置
  22. $arr = [30, 4, 82, 15, 20, 'abc', 'hello', 2, 46];
  23. arsort($arr);
  24. printf('<pre>%s</pre>', print_r($arr, true));
  25. echo '<hr>';
  26. sort($arr);
  27. printf('<pre>%s</pre>', print_r($arr, true));
  28. echo '<hr>';
  29. // 2. 键排序
  30. // ksort($arr);
  31. // krsort($arr);
  32. ksort($arr);
  33. printf('<pre>%s</pre>', print_r($arr, true));
  34. echo '<hr>';
  35. krsort($arr);
  36. printf('<pre>%s</pre>', print_r($arr, true));
  37. echo '<hr>';
  38. // 自定义排序规则
  39. // usort() 两个值
  40. $arr = [90,33,2,184, 24, 3];
  41. usort($arr,function($a,$b){
  42. // 升序
  43. return $a -$b;
  44. });
  45. printf('<pre>%s</pre>', print_r($arr, true));
  46. $arr = [90,33,2,184, 24, 3];
  47. usort($arr,function($a,$b){
  48. // 降序
  49. return $b -$a;
  50. });
  51. printf('<pre>%s</pre>', print_r($arr, true));
  52. // 打乱
  53. // shuffle() 每次结果不一样
  54. shuffle($arr);
  55. printf('<pre>%s</pre>', print_r($arr, true));

数组api 查询替换

  1. <?php
  2. namespace _0811;
  3. // 跟js 类似 js 是传字符串 php 传数组
  4. // 查询与替换
  5. // array_slice() 取出一部分成员 支持反向取值 负号
  6. $stu = [
  7. 'id' => 101,
  8. 'name' => '无忌',
  9. 'age' => 20,
  10. 'course' => 'php',
  11. 'grade' => 80
  12. ];
  13. $res = array_slice( $stu,2,3);
  14. printf('<pre>%s</pre>', print_r($res, true));
  15. echo '<hr>';
  16. $res = array_slice($stu,-5,2);
  17. printf('<pre>%s</pre>', print_r($res, true));
  18. echo '<hr>';
  19. // array_splice(): 增删改 默认功能是: 删除
  20. $arr = [10, 28, 9, 33, 56, 21, 82, 47];
  21. printf('原始数组元素: <pre>%s</pre>', print_r($arr, true));
  22. echo '<hr>';
  23. // 默认功能是: 删除
  24. print_r(array_splice($arr ,1,3)) ;
  25. echo '<hr>';
  26. printf('删除后剩余的数组元素: <pre>%s</pre>', print_r($arr ,true));
  27. echo '<hr>';
  28. // 替换功能是:
  29. $res=array_splice($arr, 1, 2, [666,999]);
  30. printf('替换后的数组元素: <pre>%s</pre>', print_r($arr ,true));
  31. // 增加 不删除就是增加 size =0 s
  32. $res=array_splice($arr, 1, 0, [666,999]);
  33. printf('增加后的数组元素: <pre>%s</pre>', print_r($arr ,true));

数组api回调

  1. <?php
  2. namespace _0811;
  3. //数组 回调
  4. $arr = [
  5. 150,
  6. 'php',
  7. true,
  8. [4, 5, 6],
  9. (new class () {
  10. }),
  11. [],
  12. null,
  13. false,
  14. '',
  15. 0,
  16. '0'
  17. ];
  18. // array_filter(),只返回数组中为true的元素组成的数组 数组过滤器
  19. print_r(array_filter($arr)) ;
  20. echo '<hr>';
  21. $res =array_filter($arr);
  22. printf('<pre>%s</pre>',print_r($res,true) );
  23. // php自动转为false的值: null, false, 空数组, 空字符串, 0, '0'
  24. // 提示: 空对象不能转为false, 但是空数组是false
  25. echo '<hr>';
  26. $res1 =array_filter($arr,function($item){
  27. // 只返回标量/基本数据类型
  28. return is_scalar($item);
  29. });
  30. printf('<pre>%s</pre>',print_r($res1,true) );
  31. echo '<hr>';
  32. printf('<pre>%s</pre>',print_r(array_filter($res1),true) );
  33. echo '<hr>';
  34. // array_map() 对每个成员 ,做回调处理,返回新数组
  35. $arr = [
  36. 'php',
  37. [3, 4, 5],
  38. (new class () {
  39. public string $name = '电脑';
  40. public int $price = 8888;
  41. }),
  42. 15,
  43. 20
  44. ];
  45. // 拉平
  46. $res2 = array_map(function($item) {
  47. switch (gettype($item)) {
  48. case 'array':
  49. $item = implode(',', $item);
  50. break;
  51. case 'object':
  52. // get_object_var 返回对象里面的变量 属性
  53. $item = get_object_vars($item);
  54. break;
  55. }
  56. return $item;
  57. },$arr);
  58. printf('<pre>%s</pre>', print_r($res2, true));
  59. echo '<hr>';
  60. // 重复拉平
  61. $arr = [
  62. 'php',
  63. [3, 4, 5],
  64. (new class () {
  65. public string $name = '电脑';
  66. public int $price = 8888;
  67. }),
  68. 15,
  69. 20
  70. ];
  71. $res3 = array_map(function($item) {
  72. switch (gettype($item)) {
  73. case 'array':
  74. $item = implode(',', $item);
  75. break;
  76. case 'object':
  77. // get_object_var 返回对象里面的变量 属性
  78. $item = implode(',', get_object_vars($item));
  79. break;
  80. }
  81. return $item;
  82. },$arr);
  83. printf('<pre>%s</pre>', print_r($res3, true));
  84. echo '<hr>';
  85. // array_reduce(): 迭代/归并处理函数
  86. $arr = [1,2,3,4,5,6];
  87. // 求和
  88. echo array_sum($arr);
  89. echo '<hr>';
  90. // 归并求和
  91. $res4 = array_reduce($arr,function ( $acc,$cur){
  92. echo $acc , '___',$cur.'<br>';
  93. return $acc +$cur;
  94. // 从多少基础上叠加
  95. },1000);
  96. echo '<hr>';
  97. echo $res4;
  98. echo '<hr>';
  99. // array_walk(): 使用自定义函数进行回调处理,返回布尔值
  100. $res = ['id' => 10, 'name' => 'admin', 'email' => 'admin@php.cn'];
  101. // array_walk(数组, 回调,回调的第三个数组的默认值)
  102. // 主要用于数组成员 的格式化, 不受数组指针影响
  103. array_walk( $res,function ($value, $key, $color){
  104. printf('[ %s ] => <span style="color:%s">%s</span><br>', $key, $color, $value);
  105. },'green');
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
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!