Blogger Information
Blog 25
fans 1
comment 1
visits 17369
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
0220作业+数组函数大全与字符串函数(常用)+10期线上班
江川林
Original
955 people have browsed it

数组函数大全

函数的三要素

1,功能

2,参数

3,返回子

对我来说比较难的数组函数是
-1,array_search:搜索数组中指定的值,返回其键名。(参数一:需要搜索的值;参数二:目标数组)
-2,usort:自定义函数对目标数组的值进行排序
(参数一:目标数组;参数二:函数)
-3,natsort:支持数字型字符串排序(自然排序)
(参数:目标数组。 主要要理解其功能,是按照人通常的想法去排序,比如(自然排序升序):
img3<img10<img12
-4,array_flip:交换数组中的键和值
(参数:目标数组)
-5,array_reverse:反转一个数组
(参数:目标数组)
-6,array_slice:从一个数组中取出一部分元素
(参数一:目标数组;参数二:从哪个索引开始;参数三:从索引开始后,往后几个结束)
-7,array_splice:去掉数组中的一部分,并用其他代替
(参数一:目标数组;参数二:从哪个索引开始;参数三:从索引开始后,往后几个结束;参数四:替代的数组或值)
-8,array_replace:使用后面一个数组的值替换前一个数组的值
-9,array_combine:将两个数组合并成新数组,且第一个数组的值作为键,第二个数组的值作为相对应的值
-10,array_merge:把一个或多个数组合并成一个数组,且键名相同的,后面数组的值会覆盖前一个数组的值,如果键名不同值相同,则直接合并到后面
-11,array_fill:用给定的值填充数组。
(参数一,从索引几开始;参数二:填充数量;参数三:填充的值)
-12,array_fill_keys:用给定的键和值填充数组。
(参数一:键名(可以是数组);参数二:填充的值)
-13,array_pad:将一个值填充进数组,并填充至指定长度。
(参数一:填充的数组;参数二:填充的长度的绝对值必须大于数组本身的长度,如果为真,就填充到数组右侧,为负,测填充到左侧,默认为右侧)
-14,implode:用指定字符串将数组分割成字符串
(参数一:字符串;参数二:目标数组)
-15,explode把字符串分割,重组为新数组
(参数一:字符串(主要看字符串中的分隔符是什么);参数二:目标字符串)
-16,extract:将关联数组,转换成键值对(变量)
(参数:目标关联数组)
-17,compact:将变量转换成关联数组
(参数:变量的键名)
-18,array_filter:用回调函数过滤数组中的单元
(参数一:目标数组;参数二:闭包函数),如果没有设置参数二,则会过滤目标数组总的空白值
-19,array_map:为数组中的每个元素执行一次回调函数
-20,array_walk:使用用户自动定义的函数对数组中的每个元素进行回调

以下是关于数组函数的上机操作

  1. <?php
  2. namespace chapter10;
  3. //常用数组函数大全
  4. //一,与键相关
  5. //1,获取所有键名组成的数组:array_keys();
  6. $arr1 = ['哈哈', '呵呵', 20, 'id' => 1];
  7. print_r(array_keys($arr1));
  8. echo '<hr>';
  9. //2,是否存在指定键名:array_key_exists();
  10. var_dump(array_key_exists('3', $arr1));
  11. echo '<hr>';
  12. //3,获取最后一个键名:array_key_last();
  13. var_dump(array_key_last($arr1));
  14. echo '<hr>';
  15. //4,获取数组中第一个键名:array_key_frist();
  16. var_dump(array_key_first($arr1));
  17. echo '<hr>';
  18. //二,与键相关
  19. $arr2 = ['id' => 1, 'name' => '王老师', 20, '很帅', 20, 1];
  20. //1,返回数组中,所有值组成的数组:array_values();
  21. var_dump(array_values($arr2));
  22. echo '<hr>';
  23. //2,检查数组中是否存在某个值:in_array();
  24. var_dump(in_array('很帅', $arr2));
  25. echo '<hr>';
  26. //3,搜索指定的值返回键名:array_search();
  27. var_dump(array_search('1', $arr2));
  28. echo '<hr>';
  29. //4,删除数组这种重复的值:array_unique();
  30. var_dump(array_unique($arr2));
  31. echo '<hr>';
  32. //三,与统计相关
  33. //1,统计数组中元素的数量或对象中属性的数量:count();
  34. $arr2 = ['id' => 1, 'name' => '王老师', 20, '很帅', 20, 1];
  35. var_dump(count($arr2));
  36. echo '<hr>';
  37. //2,统计所有值出现的频率
  38. var_dump(array_count_values($arr2));
  39. echo '<hr>';
  40. //四,栈与队列 栈是后进先出 队列是先进先出
  41. //1,从尾部添加一个或多个元素 :array_push()
  42. $arr3 = [1, 2, 3, 4, 5, 'id' => '3'];
  43. //添加多个元素是从左往右一次添加到数组的后面
  44. print_r(array_push($arr3, 6));
  45. echo '<hr>';
  46. print_r($arr3);
  47. echo '<hr>';
  48. //2,从数组的尾部删除一个元素 :array_pop()
  49. var_dump(array_pop($arr3));
  50. print_r($arr3);
  51. //3,从头部添加一个或多个元素 : array_unshift()
  52. var_dump(array_unshift($arr3, 6, 7));
  53. print_r($arr3);
  54. //4,从头部删除一个元素 :array_shift()
  55. var_dump(array_shift($arr3));
  56. var_dump(array_shift($arr3));
  57. //五,与计算相关
  58. //1,对数组中所有值求和 array_sum();
  59. $arr4 = [1, 2, 3, 4];
  60. var_dump(array_sum($arr4));
  61. //2,计算数组中所有值的乘积
  62. var_dump(array_product($arr4));
  63. echo '<hr>';
  64. //六,排序
  65. //6.1 对值排序
  66. $arr5 = [1, 3, 2, 5, 20, 15];
  67. //1,按值进行升序排序:sort()
  68. //sort($arr5);
  69. print_r($arr5);
  70. //2,按值进行排序并且索引键名不变 asort()
  71. asort($arr5);
  72. print_r($arr5);
  73. //3,按值进行降序排列 rsort()
  74. //rsort($arr5);
  75. //print_r($arr5);
  76. //4,按值进行降序排列并且索引键名不发生变化: arsort();
  77. arsort($arr5);
  78. print_r($arr5);
  79. //6.2,对键排序
  80. //1,按键名进行升序排列 ksort()
  81. $arr5 = [1, 3, 2, 5, 20, 'id' => 3, 15];
  82. ksort($arr5);
  83. print_r($arr5);
  84. //2,按键名进行降序排列 krsort()
  85. krsort($arr5);
  86. print_r($arr5);
  87. echo '<hr>';
  88. //6.3,自定义排序
  89. $arr6 = [1, 3, 2, 5, 20, 'id' => 4, 30];
  90. //1,自定义函数对值进行排序 :usort()
  91. //usort($arr6, function ($value1 ,$value2 ){return ($value1 - $value2)<0;});
  92. print_r($arr6);
  93. //2,自定义函数对值进行排序并且键名保持不变 : uasort();
  94. uasort($arr6, function ($value1, $value2) {
  95. return ($value1 - $value2) > 0;
  96. });
  97. print_r($arr6);
  98. //3,自定义函数对键名进行排序: uksort();
  99. uksort($arr6,function ($key1, $key2) {
  100. return ($key1 - $key2) > 0;
  101. } );
  102. print_r($arr6);
  103. //6.4,自然排序
  104. $arr7 = [1, 3, 'age'=>'ha', 5, 20, 'id' => 'Hb', 'name'=>'小江'];
  105. //1,支持数字型字符串排序 :natsort();
  106. //natsort($arr7);
  107. print_r($arr7);
  108. //2,不区分大小写
  109. natcasesort($arr7);
  110. print_r($arr7);
  111. //6.5,乱序与反转
  112. //1,随机打乱一个数组的顺序 : shuffle()
  113. $arr8 = [2,5,3,4,'id'=>1];
  114. //shuffle($arr8);
  115. //print_r($arr8);
  116. //2,交换一个数组中的键和值
  117. print_r(array_flip($arr8));
  118. //print_r($arr8);echo '<hr>';
  119. //3,反转一个数组: array_reverse();
  120. var_dump(array_reverse($arr8));
  121. <?php
  122. //七,查询与替换
  123. //1,从数组中取出一部分:array_slice();
  124. $arr1 = [1,2,3,4,5];
  125. var_dump(array_slice($arr1, -4, -1, true));
  126. print_r($arr1);
  127. //2,去掉数组中的一部分,并用其他值代替 array_splice()
  128. var_dump(array_splice($arr1, 1,2, [6, 6]));
  129. print_r($arr1);
  130. //3,从数组中随机获取一个或多个元素的键名 array_rand()
  131. var_dump(array_rand($arr1, 2));
  132. //4,获取多维数组中的一列组成新数组 array_column()
  133. $arr2 = [['id'=>1,'name'=>'小王'],['id'=>2,'name'=>'小江'],['id'=>3, 'name'=>'小张']];
  134. var_dump(array_column($arr2, 'name'));echo '<hr>';
  135. //5,使用后面数组的值替换第一个数组的值 array_replace()
  136. print_r(array_replace($arr1, $arr2));
  137. //6,使用递归的数组递归替换第一个数组的元素 array_replace_recursive()
  138. //7,返回数组的值的交集 array_intersect()
  139. $arr1 = [1,2,7,4,5];
  140. $arr3 = [6,2,3,8,4];
  141. var_dump(array_intersect($arr1, $arr3));echo '<hr>';
  142. //8,返回数组的值的交集,键名也做比较 array_intersect_assoc()
  143. var_dump(array_intersect_assoc($arr1, $arr3));
  144. //8,返回数组的值的差集 array_diff();
  145. var_dump(array_diff($arr1, $arr3));
  146. //9,返回数组的值的差集,键名也做比较 array_diff_assoc();
  147. var_dump(array_diff_assoc($arr1, $arr3));
  148. //8,切割与合并
  149. //1,将两个数组合并成一个新数组 array_combine();,第一个数组的值作为新数组的键名,第一个数组的值作为新数组的值
  150. var_dump(array_combine($arr1, $arr3));
  151. //2,把一个或多个数组合并成一个数组, array_merge();
  152. var_dump(array_merge($arr1, $arr3));echo '<hr>';
  153. //3,将一个数组分割成多个数组 array_chunk()
  154. var_dump(array_chunk($arr1,2));
  155. //9,自动生成
  156. //1,用给定的值填充数组 array_fill()
  157. $arr4 = [1,2,3,6,7,8];
  158. var_dump(array_fill(1, 4,2));
  159. //2,用指定的键和值填充数组 array_fill_keys()
  160. var_dump(array_fill_keys([1,2,3,4] , 2));echo '<hr>';
  161. //3, 以指定长度将一个填充进数组 array_pad(),第二个参数的绝对值要大于补充数组的元素数量
  162. var_dump(array_pad($arr4, -8, 2));
  163. //10,类型转换
  164. //1,将数组中的值赋予给一组变量 list()
  165. $arr5 = [1,2,3];
  166. list($id, $name, $age)=$arr5;
  167. echo $id;
  168. //2,将数组中的元素按指定字符分割成字符串 implode();
  169. var_dump(implode('=', $arr5));
  170. //3,将字符串中的字符分割,组成一个新数组 explode();
  171. var_dump(explode('=', implode('=', $arr5)));
  172. //4,将关联数组拆分成,变量名=值 extract()
  173. $arr6 = ['id'=>1, 'name'=>'小江'];
  174. print_r(extract($arr6));
  175. echo $name;
  176. //5,将一组变量名=值,变成一个关联数组 compact()
  177. $id = 20;
  178. $name = '小王';
  179. $study = '学习';
  180. $sex = 1;
  181. $age = ['sex', 'study'];
  182. $result = compact('id', 'name', $age);
  183. print_r($result);
  184. //12,回调处理
  185. //1,用回调函数过滤数组中的单元:array_filter();
  186. $arr6 = [1,2,3,6,7,8];
  187. var_dump(array_filter($arr6, function ($value){return $value>5;}));
  188. //2,为数组中的每个元素使用回调函数 :array_map()
  189. var_dump(array_map(function ($value){return $value*2;}, $arr6));

附加

以下是字符串函数大全(常用)的上机操作,我也手写了一遍

  1. <?php
  2. //1,将字符串分割成小块 chunk_split()
  3. $str = 'A,23,456';
  4. var_dump(chunk_split($str, 2, 9));
  5. echo chunk_split($str, 2); echo '<hr>';
  6. //2,用字符串分割字符串 explode()
  7. var_dump(explode(',', $str));echo '<hr>';
  8. //3,将一个一维数组的值转化为字符串
  9. $arr1 = ['id'=>1,'name'=>'王', 3, 4, 5];
  10. var_dump(implode('-', $arr1)); echo '<hr>';
  11. //4,使一个字符串的第一个字符小写(如果是英文的话), lcfirst();
  12. var_dump(lcfirst($str));echo '<hr>';
  13. //5,删除一个字符串开头(左边)的空白字符(或其他文件); ltrim();
  14. var_dump(ltrim($str,'A\,'));echo '<hr>';
  15. //6,转换一个字符串的第一个字节的值为0-255之间的值 ord();
  16. var_dump(ord($str));echo '<hr>';
  17. //7,将字符串解析成多个变量(该字符串必须是URL传递入的查询字符串或相同格式) parse_str();
  18. print_r($_SERVER['QUERY_STRING']);echo '<br>';
  19. $qs = $_SERVER['QUERY_STRING'];
  20. $a = 'id=2&name=3';
  21. parse_str($a,$sq);
  22. echo $sq['id'];print_r($sq);echo '<hr>';
  23. //8,使用另一个字符串填充字符串到指定长度 str_pad();
  24. $str1 = '123';
  25. var_dump(str_pad($str1, 5,'a',STR_PAD_BOTH));echo '<hr>';
  26. //9,重复一个字符串 str_repeat();
  27. var_dump(str_repeat($str1, 2));echo '<hr>';
  28. $str2 = '456';
  29. //10,子字符串的替换 str_replace();
  30. var_dump(str_replace('aaa', 'bbb', 'aaa=ccc'));echo '<hr>';
  31. //11,随机打乱一个字符串 str_shuffle();
  32. var_dump(str_shuffle($str2));echo '<hr>';
  33. //12,将字符串转换为数组 str_split();
  34. var_dump(str_split($str2, 2));echo '<hr>';
  35. //13,去除字符串中HTML和PHP的标记
  36. $text = '<p>Test paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>';
  37. echo strip_tags($text);
  38. echo strip_tags($text, '<p><a>');echo '<hr>';
  39. //14,查找字符串在一个字符串中首次出现的位置: srtpos();
  40. $mystring = 'abc';
  41. $findme = 'a';
  42. $pos = strpos($mystring, $findme);
  43. // 注意这里使用的是 ===。简单的 == 不能像我们期待的那样工作,
  44. // 因为 'a' 是第 0 位置上的(第一个)字符。
  45. if ($pos === false) {
  46. echo "The string '$findme' was not found in the string '$mystring'";
  47. } else {
  48. echo "The string '$findme' was found in the string '$mystring'";
  49. echo " and exists at position $pos";
  50. }echo '<hr>';
  51. //15,计算字符串出现的次数 substr_count()
  52. $str3 = 'asdfgh';
  53. var_dump(substr_count($str3, 'd', 1));echo '<hr>';
  54. //16,替换字符串的字串:substr_replace();
  55. var_dump(substr_replace($str3, 123, 2, 0));echo '<hr>';
  56. //17,返回字符串的字串:substr();
  57. var_dump(substr($str3,3));

谢谢老师审阅

Correcting teacher:天蓬老师天蓬老师

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