Blogger Information
Blog 48
fans 0
comment 0
visits 34164
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
简单了解和演示数组函数(0713)
丶久而旧之丶
Original
620 people have browsed it

数组函数

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.多练习代码,以便于掌握

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
Author's latest blog post