Blogger Information
Blog 49
fans 0
comment 3
visits 23043
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
实例演示php数组常用api
P粉479712293
Original
322 people have browsed it

题目1:数组指针的向前prev()与向后next()

php文件:

  1. <?php
  2. // *数组指针的向前prev()与向后next()
  3. // *一个名为三国的数组
  4. $sanguo=['id'=>1,'name'=>'关羽','nickname'=>'关公','tribe'=>'蜀国'];
  5. printf('[%s]=>%s<br>',key($sanguo),current($sanguo));
  6. next($sanguo);
  7. printf('[%s]=>%s<br>',key($sanguo),current($sanguo));
  8. next($sanguo);
  9. printf('[%s]=>%s<br>',key($sanguo),current($sanguo));
  10. next($sanguo);
  11. printf('[%s]=>%s<br>',key($sanguo),current($sanguo));
  12. prev($sanguo);
  13. printf('[%s]=>%s<br>',key($sanguo),current($sanguo));
  14. reset($sanguo);
  15. printf('[%s]=>%s<br>',key($sanguo),current($sanguo));
  16. end($sanguo);
  17. printf('[%s]=>%s<br>',key($sanguo),current($sanguo));

浏览器运行效果图:

题目2:数组的循环遍历及数组的解构

php文件:

  1. <?php
  2. // *数组的循环遍历及数组的解构
  3. // *1.用while循环遍历数组
  4. $suihu=['id'=>2,'name'=>'宋江','nickname'=>'及时雨','tribe'=>'水泊梁山'];
  5. reset($suihu);
  6. if(count($suihu)>0){
  7. while(true){
  8. printf('[%s]=>%s<br>',key($suihu),current($suihu));
  9. if(next($suihu)){
  10. continue;
  11. }else{
  12. break;
  13. }
  14. }
  15. }else{
  16. echo '空数组';
  17. }
  18. // *2.使用foreach数组循环遍历语法糖:
  19. foreach($suihu as $key=>$value){
  20. printf('[%s]=>%s<br>',$key,$value);
  21. }
  22. echo '<hr>';
  23. // *数组解构:就是把数组解析到变量中
  24. // *索引数组的解构
  25. list($name,$nickname)=['关羽','关公'];
  26. echo $name,',',$nickname,'<br>';
  27. echo '<hr>';
  28. // *关联数组的解构
  29. list('name'=>$name,'nickname'=>$nickname)=['name'=>'林冲','nickname'=>'豹子头'];
  30. echo $name,',',$nickname,'<br>';
  31. echo '<hr>';
  32. // *通过内置的extract解析关联数组
  33. extract(['name'=>'李逵','nickname'=>'黑旋风']);
  34. echo $name,',',$nickname,'<br>';

浏览器运行效果图:

题目3:foreach数据表以及推荐使用的解构方法

php文件:

  1. <?php
  2. // *foreach数据表以及推荐使用的解构方法
  3. // *1.使用foreach遍历数据库中的数据表
  4. $users=[
  5. ['id'=>1,'name'=>'刘备'],
  6. ['id'=>2,'name'=>'关羽'],
  7. ['id'=>3,'name'=>'张飞'],
  8. ];
  9. foreach($users as $user){
  10. vprintf('id=%s,name=%s<br>',$user);
  11. }
  12. echo '<hr>';
  13. // *2.把$users数组当作一个模板,直接将它解构,其效果也是一样的(推荐)
  14. foreach($users as list('id'=>$id,'name'=>$name)){
  15. printf('id=%s,name=%s<br>',$id,$name);
  16. }

浏览器运行效果图:

题目4:数组的值组成新数组及键号重置以及元素的查询

php文件:

  1. <?php
  2. // *数组的值组成新数组及键号重置以及元素的查询
  3. //* 1.array_values():将数组的值组成新数组及键号重置
  4. $arr=[0=>1,3=>'水浒',4=>5,7=>['刘备','关羽','张飞']];
  5. printf('<pre>%s</pre>',print_r($arr,true));
  6. printf('<pre>%s</pre>',print_r(array_values($arr),true));
  7. // *2.in_array():查询某个元素是否在数组中
  8. echo(in_array('水浒',$arr)?'在数组中':'不在数组中').'<br>';
  9. echo(in_array('三国',$arr)?'在数组中':'不在数组中').'<br>';
  10. // *3.array_search():不但找到该元素,还知道该元素的索引是多少,从而也知道该元素的值
  11. $key=array_search('水浒',$arr);
  12. echo $key,'<br>',$arr[$key];

浏览器运行效果图:

题目5:数组元素的值的展示与计算

php文件:

  1. <?php
  2. // *数组元素的值的展示与计算
  3. // *1.array_unique():去掉数组重复的值
  4. $lgz=[0=>'刘备',1=>'关羽',2=>'张飞',3=>'刘备'];
  5. printf('<pre>%s</pre>',print_r($lgz,true));
  6. print_r(array_unique($lgz));
  7. echo '<br>';
  8. // *2.count()统计当前数组元素的数量:
  9. echo count($lgz);
  10. // *3.array_count_values():统计数组中元素的值出现的次数
  11. printf('<pre>%s</pre>',print_r(array_count_values($lgz),true));
  12. // *4.array_sum():计算数组中元素的值之和
  13. $arr=[0=>1,2=>40,3=>'10php',4=>'js10',5=>'css'];
  14. echo array_sum($arr).'<br>';
  15. // *5.array_product():计算数组中元素的值的乘积
  16. echo array_product($arr);

浏览器运行效果图:

题目6:数组元素的增加与删除相当于堆栈的压入与弹出

php文件:

  1. <?php
  2. // *数组元素的增加与删除相当于堆栈的压入与弹出
  3. // *空数组
  4. $lgz=[];
  5. // *1.array_push():数组元素压入堆栈
  6. echo array_push($lgz,'刘备','关羽','张飞').'<br>';
  7. print_r($lgz);
  8. echo '<br>';
  9. // *2.array_pop():数组的元素弹出堆栈(后进先出)
  10. echo array_pop($lgz).'<br>';
  11. echo array_pop($lgz).'<br>';
  12. print_r($lgz);
  13. echo '<br>';
  14. $sanguo=[];
  15. // *3.array_unshift():数组元素压入堆栈的另一种形式
  16. echo array_unshift($sanguo,'魏国','蜀国','吴国').'<br>';
  17. print_r($sanguo);
  18. echo '<br>';
  19. // *4.array_shift():数组元素弹出堆栈的另一种形式(先进先出)
  20. echo array_shift($sanguo).'<br>';
  21. echo array_shift($sanguo).'<br>';
  22. print_r($sanguo);
  23. echo '<br>';
  24. // *5.array_push()入,array_shift()出
  25. $student=[];
  26. echo array_push($student,'张三','李四','王五').'<br>';
  27. print_r($student);
  28. echo '<br>';
  29. echo array_shift($student).'<br>';
  30. echo array_shift($student).'<br>';
  31. print_r($student);
  32. echo '<br>';
  33. // *6.array_unshift()入,array_pop()出
  34. $product=[];
  35. echo array_unshift($product,'电脑','空调','音响').'<br>';
  36. echo array_pop($product).'<br>';
  37. echo array_pop($product).'<br>';
  38. print_r($product);

浏览器运行效果图:

题目7:数组元素的升降序

php文件:

  1. <?php
  2. // *sort():数组元素的升序(默认)
  3. $arr=[2,34,55,6,'php','welcome',7];
  4. printf('<pre>%s</pre>',print_r($arr,true));
  5. sort($arr);
  6. printf('<pre>%s</pre>',print_r($arr,true));
  7. echo '<hr>';
  8. // *asort():在前面加a则顺序时键号不会被重置
  9. $arr2=[21,134,55,62,'李四','abc',17];
  10. printf('<pre>%s</pre>',print_r($arr2,true));
  11. asort($arr2);
  12. printf('<pre>%s</pre>',print_r($arr2,true));
  13. echo '<hr>';
  14. // *rsort():数组元素的降序排列
  15. $arr3=[11,34,50,2,'a2','a',12];
  16. printf('<pre>%s</pre>',print_r($arr3,true));
  17. rsort($arr3);
  18. printf('<pre>%s</pre>',print_r($arr3,true));
  19. echo '<hr>';
  20. // *arsort():在前面加a则降序时键号不会被重置
  21. $arr4=[2,13,5,6,'js','张三',30];
  22. printf('<pre>%s</pre>',print_r($arr4,true));
  23. arsort($arr4);
  24. printf('<pre>%s</pre>',print_r($arr4,true));
  25. echo '<hr>';
  26. // *ksort():键排序(升序)
  27. $arr5=[2,34,55,6,'php','welcome',7];
  28. printf('<pre>%s</pre>',print_r($arr5,true));
  29. ksort($arr5);
  30. printf('<pre>%s</pre>',print_r($arr5,true));
  31. echo '<hr>';
  32. // *krsort():键的降序
  33. $arr6=[2,34,55,6,'php','welcome',7];
  34. printf('<pre>%s</pre>',print_r($arr6,true));
  35. krsort($arr6);
  36. printf('<pre>%s</pre>',print_r($arr6,true));
  37. echo '<hr>';
  38. // *shuffle():乱序(即每刷新一次就大乱顺序一次,可用于抽奖等场合)
  39. $arr7=[2,34,55,6,'php','welcome',7];
  40. printf('<pre>%s</pre>',print_r($arr7,true));
  41. shuffle($arr7);
  42. printf('<pre>%s</pre>',print_r($arr7,true));
  43. echo '<hr>';

浏览器运行效果图:

题目8:数组中部分元素的展示与删除

php文件:

  1. <?php
  2. // *展示数组中的部分元素与删除数组中的部分元素
  3. // *1.array_slice():只展示数组的部分元素
  4. $sanguo=['id'=>1,'name'=>'关羽','nickname'=>'关公','arms'=>'青龙偃月刀'];
  5. $res=array_slice(
  6. $sanguo,
  7. 1,
  8. 2
  9. );
  10. printf('<pre>%s</pre>',print_r($res,true));
  11. $res=array_slice(
  12. $sanguo,
  13. 1
  14. );
  15. printf('<pre>%s</pre>',print_r($res,true));
  16. echo '<hr>';
  17. // *2.array_splice():删除数组中的部分元素
  18. $arr=[2,34,55,6,'php','welcome',7];
  19. printf('<pre>%s</pre>',print_r($arr,true));
  20. $res1=array_splice(
  21. $arr,
  22. 1,
  23. 2
  24. );
  25. printf('<pre>%s</pre>',print_r($res1,true));
  26. printf('<pre>%s</pre>',print_r($arr,true));

浏览器运行效果图:

题目9:php数组元素的替换与追加

php文件:

  1. <?php
  2. // *php数组元素的替换与追加
  3. // *1.使用array_splice()功能实现替换
  4. $arr=[2,34,55,6,'php','welcome',7];
  5. printf('原始数组:<pre>%s</pre>',print_r($arr,true));
  6. $res=array_splice(
  7. $arr,
  8. 4,
  9. 2,
  10. ['js','hello'],
  11. );
  12. printf('<pre>%s</pre>',print_r($res,true));
  13. printf('新数组:<pre>%s</pre>',print_r($arr,true));
  14. echo '<hr>';
  15. // *2.使用array_splice()功能实现追加
  16. $arr1=[2,34,55,6,'php','welcome',6];
  17. printf('原始数组:<pre>%s</pre>',print_r($arr1,true));
  18. $res1=array_splice(
  19. $arr1,
  20. 1,
  21. 0,
  22. [22,33],
  23. );
  24. // printf('<pre>%s</pre>',print_r($res1,true));
  25. printf('新数组:<pre>%s</pre>',print_r($arr1,true));

浏览器运行效果图:

题目10:数组过滤器

php文件:

  1. <?php
  2. // *数组过滤器
  3. // *1.留下true的元素,其余过滤掉
  4. $arr=[
  5. 234,
  6. 'js',
  7. true,
  8. [1,2,3],
  9. (new class(){
  10. }),
  11. [],
  12. null,
  13. false,
  14. '',
  15. 0,
  16. '0'
  17. ];
  18. $res=array_filter($arr);
  19. printf('<pre>%s</pre>',print_r($res,true));
  20. echo '<hr>';
  21. // *2.留下标量(数据类型),其余过滤掉
  22. $res1=array_filter($arr,function($item){
  23. return is_scalar($item);
  24. });
  25. printf('<pre>%s</pre>',print_r($res1,true));
  26. // *再次过滤
  27. printf('<pre>%s</pre>',print_r(array_filter($res1),true));

浏览器运行效果图:

题目11:数组拉平与迭代

php文件:

  1. <?php
  2. // *数组拉平与迭代
  3. // *1.array_map(function($item){},$arr):把数组$arr中的元素$item拉平成字符串
  4. $arr = [
  5. '水浒',
  6. [3, 4, 5],
  7. (new class () {
  8. public string $name = '宋江';
  9. public string $nickname = '及时雨';
  10. }),
  11. 15,
  12. 20
  13. ];
  14. // *拉平
  15. $res=array_map(function($item){
  16. switch(gettype($item)){
  17. case 'array':
  18. $item=implode(',',$item);
  19. break;
  20. case 'object':
  21. $item=implode(',',get_object_vars($item));
  22. break;
  23. }
  24. return $item;
  25. },$arr);
  26. printf('<pre>%s</pre>',print_r($res,true));
  27. echo '<hr>';
  28. // *2.array_sum():数组的值求和也是迭代的一种
  29. $arr1=[1,2,3,4,5];
  30. echo array_sum($arr1),'<br>';
  31. echo '<hr>';
  32. // *3.array_reduce():迭代:就是把这些数组元素用同一个值返回,
  33. // *或者把许多标签组合在一起,形成一个比较大的元素
  34. $res1=array_reduce($arr1,function($acc,$cur){
  35. echo $acc,',',$cur,'<br>';
  36. return $acc+$cur;
  37. },0);
  38. echo $res1,'<br>';
  39. echo '<hr>';
  40. // *4.array_walk():对模板进行一些控制
  41. $arr2=['id'=>5,'name'=>'李逵','nickname'=>'黑旋风'];
  42. array_walk($arr2,function($value,$key,$color){
  43. printf('[%s]=><span style="color:%s">%s</span><br>',$key,$color,$value);
  44. },'red');

浏览器运行效果图:

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