博客列表 >0220作业+数组函数大全与字符串函数(常用)+10期线上班

0220作业+数组函数大全与字符串函数(常用)+10期线上班

江川林
江川林原创
2020年03月01日 19:14:23954浏览

数组函数大全

函数的三要素

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));

谢谢老师审阅

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