博客列表 >PHP数组函数大全,"活用栈与队列"—解决高并发,运维工程师领盒饭...

PHP数组函数大全,"活用栈与队列"—解决高并发,运维工程师领盒饭...

张福根一修品牌运营
张福根一修品牌运营原创
2020年11月25日 15:22:11673浏览

数组相关处理函数

效果展示:

数组相关处理函数

案例源码:

  1. <?php
  2. // 一、数组相关处理函数
  3. // 1、key() 函数返回数组内部指针当前指向元素的键名
  4. $arr = ['id'=>1987,'name'=>'fugen','email'=>'2017539632@qq,com'];
  5. $keys = [];
  6. echo key( $arr),'<br>';
  7. next($arr);
  8. echo key( $arr).'<br>';
  9. next($arr);
  10. echo key( $arr).'<br>';
  11. //指针复位
  12. reset( $arr).'<br>';
  13. echo key( $arr).'<br>';
  14. echo '<hr>';
  15. // 2、array_keys()返回数组,数组成员是原数组的键名
  16. $arr2 = ['id'=>1988,'name'=>'fugen','email'=>'2017539632@qq,com'];
  17. print_r(array_keys( $arr));
  18. echo '<hr>';
  19. // 3、array_values()返回数组中所有的值(不保留键名),键值从0到1 递增
  20. $arr3 = ['id'=>1988,'name'=>'fugen','email'=>'2017539632@qq,com'];
  21. print_r(array_values($arr3));
  22. echo '<hr>';
  23. // 4、in_array()检测一个成员在不在指定的数组中,存在返回true 不存在返回false
  24. $arr4 = ['id'=>1989,'name'=>'fugen','email'=>'2017539632@qq,com'];
  25. var_dump(in_array('fugen',$arr4));
  26. var_dump(in_array('xiaoer',$arr4));
  27. echo '<hr>';
  28. // 5、array_search() 不存在返回false,存在的话返回元素值对应的键名
  29. $arr5 = ['id'=>1990,'name'=>'fugen','email'=>'2017539632@qq,com'];
  30. var_dump(array_search(1989,$arr5));
  31. var_dump(array_search(1990,$arr5));
  32. echo '<hr>';
  33. // 6、array_unique() 移除数组中重复的值
  34. $arr6 = [1,2,3,4,5,5,6,8,8,7,9];
  35. print_r(array_unique($arr6)).'<br>';
  36. echo '<hr>';
  37. // 7、array_sum() 返回数组中所有成员的和
  38. $arr7 = [1,2,3,4,5,];
  39. var_dump(array_sum($arr7)); //int(15)
  40. echo '<hr>';
  41. // 8、array_product() 返回数组中所有成员相乘的结果
  42. $arr8 = [1,2,3,4,];
  43. var_dump(array_product($arr8));//int(24)
  44. echo '<hr>';
  45. // 二、数组的拆分与合并
  46. // 9、array_slice 从数组中去除一部分元素
  47. $stu9 = ['id'=>1001,'name'=>'张福根','age'=>30,'course'=>'php'];
  48. print_r(array_slice($stu9,1,1));//Array ( [name] => 张福根 )
  49. echo '<hr>';
  50. // 10、array_splice() 函数从数组中移除选定的元素,并用新元素取代它。
  51. $stu10 = ['id'=>1001,'name'=>'张福根','age'=>30,'course'=>'php'];
  52. //删除
  53. print_r(array_splice($stu10,2,1));//Array ( [age] => 30 )
  54. echo '<br>';
  55. print_r($stu10);//Array ( [id] => 1001 [name] => 张福根 [course] => php )
  56. echo '<hr>';
  57. // 替换
  58. $stu11 = [10,25,9,33,56,21,82,47];
  59. print_r(array_splice($stu11,1,3,[777,888,999]));//Array ( [0] => 25 [1] => 9 [2] => 33 )
  60. echo '<br>';
  61. print_r($stu11 );
  62. echo '<hr>';
  63. //新增
  64. $stu12 = ['张','福','根'];
  65. array_splice($stu12,-1,3,array('在','家','里'));
  66. print_r($stu12);
  67. echo '<hr>';
  68. // 11、extract() 将关联数组拆分成变量
  69. // 使用数组键名作为变量名,使用数组键值作为变量值。针对数组中的每个元素,将在当前符号表中创建对应的一个变量。
  70. $config = ['type'=>'mysql','host'=>'localhost','dbname'=>'phpedu','charset'=>'utf=8'];
  71. echo (extract($config));//4
  72. echo '<br>';
  73. echo $type, $host, $dbname, $charset;
  74. echo '<hr>';
  75. // 12、compact()创建一个包含变量名和它们的值的数组:
  76. $id = 20201125;
  77. $username = 'fugen';
  78. $gender = "man";
  79. $info = (compact('id','username','gender'));
  80. print_r($info);
  81. echo '<hr>';
  82. // 三、栈与队列
  83. // 栈:是一种特殊的线性表,是添加与删除受限的一种数据结构 LIFO,只能在固定的一端进行数据的添加与删除 last in first out
  84. $footer = [1,2];
  85. // array_push()在栈的尾部进行-增加
  86. array_push($footer,10,20,30);
  87. print_r($footer);//Array ( [0] => 1 [1] => 2 [2] => 10 [3] => 20 [4] => 30 )
  88. echo '<br>';
  89. // array_pop()在栈的尾部进行-删除
  90. echo array_pop($footer);//30
  91. echo '<br>';
  92. print_r($footer);//Array ( [0] => 1 [1] => 2 [2] => 10 [3] => 20 )
  93. echo '<hr>';
  94. $header = [1,2];
  95. // array_unshift()在栈的头部进行数据-增加
  96. echo array_unshift($header,'fu','gen');//4
  97. echo '<br>';
  98. print_r($header);//Array ( [0] => fu [1] => gen [2] => 1 [3] => 2 )
  99. echo '<hr>';
  100. // array_shift()在栈的头部进行数据-删除
  101. echo array_shift($header);//fu
  102. echo '<br>';
  103. echo array_shift($header);//fu
  104. echo '<br>';
  105. print_r($header);//Array ( [0] => 1 [1] => 2 )
  106. echo '<hr>';
  107. // 队列:FIFO queue数据结构之一,特殊的线性表,受到操作的限制
  108. $queue = ['我','们'];
  109. //尾部进队+头部出队 array_push + array_shift
  110. array_push($queue,'心','中','家');
  111. print_r($queue);//Array ( [0] => 我 [1] => 们 [2] => 心 [3] => 中 [4] => 家 )
  112. echo '<br>';
  113. echo array_shift($queue);//我
  114. echo '<br>';
  115. print_r($queue);//Array ( [0] => 们 [1] => 心 [2] => 中 [3] => 家 )
  116. echo '<hr>';
  117. // 头部进队+尾部出队 array_unshift + array_pop
  118. $queue1 = ['wo','men'];
  119. array_unshift($queue1,'one','two');//Array ( [0] => one [1] => two [2] => wo [3] => men )
  120. print_r($queue1);
  121. echo '<br>';
  122. echo array_pop($queue1);//men

案例总结:

1、key() 函数返回数组内部指针当前指向元素的键名
2、array_keys()返回数组,数组成员是原数组的键名
3、array_values()返回数组中所有的值(不保留键名),键值从0到1 递增
4、in_array()检测一个成员在不在指定的数组中,存在返回true 不存在返回false
5、array_search() 不存在返回false,存在的话返回元素值对应的键名
6、array_unique() 移除数组中重复的值
7、array_sum() 返回数组中所有成员的和
8、array_product() 返回数组中所有成员相乘的结果
9、array_slice 从数组中去除一部分元素
10、array_splice() 删除,替换,新增三个功能,函数从数组中移除选定的元素,并用新元素取代它。
11、extract() 将关联数组拆分成变量,使用数组键名作为变量名,使用数组键值作为变量值。
12、compact()创建一个包含变量名和它们的值的数组:


栈与队列

栈:是一种特殊的线性表,是添加与删除受限的一种数据结构 LIFO,只能在固定的一端进行数据的添加与删除 last in first out

  • array_push()在栈的尾部进行-增加
  • array_pop()在栈的尾部进行-删除
  • array_unshift()在栈的头部进行数据-增加
  • array_shift()在栈的头部进行数据-删除

队列:FIFO queue数据结构之一,特殊的线性表,受到操作的限制

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