博客列表 >简单了解和演示数组函数(0713)

简单了解和演示数组函数(0713)

丶久而旧之丶
丶久而旧之丶原创
2020年07月24日 19:00:35624浏览

数组函数

1.键名相关函名

  • 获取全部键名
  • 判断键名是否存在
  • 获取头部或者尾部的键名
  1. $arr = ['id'=>10, 'name'=>'小明', 'sex'=>'男'];
  2. // 获取数组中的键名
  3. // 1.手动获取
  4. echo key($arr),'<br>';
  5. next($arr);
  6. echo key($arr),'<br>';
  7. next($arr);
  8. echo key($arr),'<br>';
  9. echo '<hr>';
  10. // 2.while循环获取
  11. reset($arr);
  12. while(key($arr)){
  13. $a[] = key($arr);
  14. next($arr);
  15. }
  16. echo "<pre>".print_r($a,true)."</pre><hr>";
  17. // 3.使用系统函数array_keys()获取键名
  18. echo "<pre>".print_r(array_keys($arr),true)."</pre><hr>";
  19. // 4.array_key_exists()函数判断键名是否存在
  20. echo array_key_exists('sex',$arr)? '键名存在': '键名不存在','<br>';
  21. echo array_key_exists('age',$arr)? '键名存在': '键名不存在','<hr>';
  22. // 5.获取数组第一个或者最后一个的键名(主要用于数组内数据多的时候操作)
  23. // 获取第一个键名
  24. echo array_key_first($arr),'<br>';
  25. // 获取最后一个键名
  26. echo array_key_last($arr),'<hr>';

2.与值相关函数

  1. // 获取数组中的值
  2. // 1.foreach()函数
  3. foreach ($arr as $value) {
  4. $v[] = $value;
  5. }
  6. echo "<pre>" . print_r($v, true) . "</pre><hr>";
  7. // 2.用系统函数array_values()获取
  8. echo "<pre>" . print_r(array_values($arr), true) . "</pre><hr>";
  9. // 3.判断值是否存在
  10. echo in_array('html', $arr) ? '值存在' : '值不存在', '<br>';
  11. echo in_array('css', $arr) ? '值存在' : '值不存在', '<br>';
  12. // 4.根据值获取键名(如果存在返回键名,如果不存在返回false)
  13. var_dump(array_search('php', $arr));
  14. var_dump(array_search('php1', $arr));
  15. // 5.去除数组中相同的值
  16. echo "<pre>" . print_r(array_unique($arr), true) . "</pre>";

3.栈与队列

  • 栈:添加与删除受限的一种数据结构,数据的增删仅允许在一端进行(LIFO)
  1. $arr = [];
  2. // 从尾部进栈
  3. echo array_push($arr, 10, 20, 'PHP', 'JAVA'), '<br>';
  4. print_r($arr);
  5. echo '<hr>';
  6. // 从尾部出栈,先进的元素后出(删除数组中的数据并返回元素的值)
  7. echo array_pop($arr), '<br>';
  8. echo array_pop($arr), '<br>';
  9. echo array_pop($arr), '<br>';
  10. echo array_pop($arr), '<hr>';
  11. // 从头部进栈,
  12. echo array_unshift($arr, 20, 'C++', 'python'), '<br>';
  13. array_unshift($arr, 'php');
  14. array_unshift($arr, '汇编');
  15. print_r($arr);
  16. echo '<hr>';
  17. // 从头部出栈,(删除数组中的数据并返回元素的值)
  18. echo array_shift($arr), '<br>';
  19. echo array_shift($arr), '<br>';
  20. echo array_shift($arr), '<br>';
  21. echo array_shift($arr), '<br>';
  22. echo array_shift($arr), '<hr>';

  • 队列:数据增删不在同一端(元素的值先进先出)
  1. $arr = [];
  2. // 尾部进入,头部出值
  3. array_push($arr, 'JAVA');
  4. array_push($arr, 'PHP');
  5. array_push($arr, 'C++');
  6. print_r($arr);
  7. echo '<br>';
  8. // 从头部出值
  9. echo array_shift($arr), '<br>';
  10. echo array_shift($arr), '<br>';
  11. echo array_shift($arr), '<hr>';
  12. // 头部进入,尾部出值
  13. array_unshift($arr, 'JAVA');
  14. array_unshift($arr, 'PHP');
  15. array_unshift($arr, 'C++');
  16. print_r($arr);
  17. echo '<br>';
  18. // 尾部出值
  19. echo array_pop($arr), '<br>';
  20. echo array_pop($arr), '<br>';
  21. echo array_pop($arr), '<br>';

4.排序

  1. // 数组中的值排序
  2. $arr = [25, 'php', 85, 'html'];
  3. echo "<pre>" . print_r($arr, true) . "</pre>", '<hr>';
  4. // 默认按值的升序排列使用sort()键名会重排,使用asort()键名不会重排
  5. asort($arr);
  6. echo "<pre>" . print_r($arr, true) . "</pre>", '<hr>';
  7. // 键名重新排列
  8. sort($arr);
  9. echo "<pre>" . print_r($arr, true) . "</pre>", '<hr>';
  10. // 自定义函数(效果和sort是一样的,键名也会重排)
  11. usort($arr, function ($a, $b) {
  12. return $a <=> $b;
  13. });
  14. // 键名排序
  15. $arrs = ['b' => 5, 'a' => 8, 'c' => 10];
  16. echo "<pre>" . print_r($arrs, true) . "</pre>", '<hr>';
  17. // 键名升序排列
  18. ksort($arrs);
  19. echo "<pre>" . print_r($arrs, true) . "</pre>", '<hr>';
  20. // 键名降序排列
  21. krsort($arrs);
  22. echo "<pre>" . print_r($arrs, true) . "</pre>", '<hr>';
  23. // 自然排序(用于字符串中有数字和其他字母的排序)
  24. $txts = ['temp2.txt', 'temp15.txt', 'temp10.txt', 'temp8.txt'];
  25. echo "<pre>" . print_r($txts, true) . "</pre>", '<hr>';
  26. // 标准排序
  27. sort($txts);
  28. echo "<pre>" . print_r($txts, true) . "</pre>", '<hr>';
  29. // 自然排序
  30. natsort($txts);
  31. echo "<pre>" . print_r($txts, true) . "</pre>", '<hr>';
  • 标准排序

  • 自然排序

5.数组取值

  1. // array_slice():第一个参数为需要取值的数组,第二个参数为从什么位置开始取,第三个参数为取几个
  2. $arr = ['id' => 12, 'name' => '小红', 'sex' => '女', 'taste' => 'php'];
  3. echo "<pre>" . print_r($arr, true) . "</pre>", '<hr>';
  4. $a = array_slice($arr, 1, 3);
  5. echo "<pre>" . print_r($a, true) . "</pre>", '<hr>';
  6. // 第二个参数可以为负数
  7. $b = array_slice($arr, -2, 2);
  8. echo "<pre>" . print_r($b, true) . "</pre>", '<hr>';

6.数组数据的增删改

  1. // array_splice()函数,(返回值为被操作了的值)
  2. // 第一个参数为需要操作的数组,第二个参数为从哪个位置开始操作,
  3. // 第三个参数为要操作几个值(为0则是数组的增加操作)
  4. // 如果写入第四个参数那么是数组的替换数值或者增加数值
  5. $int = [10, 15, 85, 75, 12, 48, 82, 54];
  6. $int1 = [10, 15, 85, 75, 12, 48, 82, 54];
  7. $int2 = [10, 15, 85, 75, 12, 48, 82, 54];
  8. echo "<pre>" . print_r($int, true) . "</pre>", '<hr>';
  9. // 删除操作
  10. $a = array_splice($int, 2, 3);
  11. echo "<pre>" . print_r($int, true) . "</pre>", '<hr>';
  12. // 替换操作
  13. $b = array_splice($int1, 2, 3, [222, 333, 444]);
  14. echo "<pre>" . print_r($int1, true) . "</pre>", '<hr>';
  15. // 增加操作
  16. $c = array_splice($int2, 2, 0, [999, 888, 777]);
  17. echo "<pre>" . print_r($int2, true) . "</pre>", '<hr>';

7.数组合并

  1. // array_combine()将两个数组合并,一个数组作为键名,一个数组作为值
  2. $key = ['id', '小红', '女', 'PHP'];
  3. $value = [1, 'name', 'sex', 'taste'];
  4. echo "<pre>" . print_r(array_combine($key, $value), true) . "</pre>", '<hr>';
  5. // array_merge()将一个或多个数组合并为一个数组
  6. echo "<pre>" . print_r(array_merge($key, $value), true) . "</pre>", '<hr>';

8.数组过滤

  • array_filer()函数
  1. // array_filter()函数:过滤掉空值
  2. $arr = ['php', [], 13, false, (new class
  3. {
  4. }), null, 'java', 0, [1, 3, 5]];
  5. // 过滤掉元素值不能转换true的值
  6. echo "<pre>" . print_r(array_filter($arr), true) . "</pre>", '<hr>';
  7. // 过滤掉数组中的复合数据类型和特殊数据类型
  8. $a = array_filter($arr, function ($i) {
  9. return is_scalar($i);
  10. });
  11. echo "<pre>" . print_r($a, true) . "</pre>", '<hr>';

  • array_map()函数
  1. $arrs = ['php', 13, (new class
  2. {
  3. public $name = '小明';
  4. public $sex = '男';
  5. public $taste = 'php';
  6. }), 'java', [1, 3, 5]];
  7. // 操作:如果值为数组则转为字符串输出,为对象则获取之中的值输出,否则直接输出
  8. $aa = array_map(function ($i) {
  9. // 判断
  10. switch (gettype($i)) {
  11. case 'object':
  12. $i = get_object_vars($i);
  13. case 'array':
  14. $i = implode(',', $i);
  15. }
  16. return $i;
  17. }, $arrs);
  18. echo "<pre>" . print_r($aa, true) . "</pre>", '<hr>';

9.数组和变量转换

  • extract()函数:将关联数组拆分为变量
  • compact()函数可以把一组变量转为关联数组
  1. // extract()函数:将关联数组拆分为变量
  2. $arr = ['id' => 12, 'name' => '小红', 'sex' => '女', 'taste' => 'php'];
  3. extract($arr);
  4. echo $id . '<br>' . $name . '<br>' . $sex . '<br>' . $taste . '<hr>';
  5. // compact()函数可以把一组变量转为关联数组
  6. $id = 2;
  7. $name = '小明';
  8. $sex = '男';
  9. $taste = 'JAVA';
  10. echo "<pre>" . print_r(compact('id', 'name', 'sex', 'taste'), true) . "</pre>", '<hr>';

总结

1.了解了更多的数组函数
2.课后查看手册便于了解课上没讲到的数组函数
3.多练习代码,以便于掌握

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