Blogger Information
Blog 100
fans 8
comment 2
visits 150163
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
数组常用操作函数解析
lilove的博客
Original
982 people have browsed it

操作用户提交数据示例

用户提交的url:

http://127.0.0.1/20200713/1.php?username=%E5%B0%8F%E5%88%9A&email=admin@php.cn

代码示例:

  • 案例1:array_key_exist()判断用户提交数据是否存在必要字段
  1. echo array_key_exists('username', $_GET) ? '提交成功' : '用户名未提交';
  • 案例2:array_key_first()获取用户提交的数据中第一个元素的键
  1. echo array_key_first($_GET);
  • 案例3:array_key_last()获取用户提交的数据中最后一个元素的键
  1. echo array_key_last($_GET);
  • 案例4:array_keys()获取用户提交数据数组所有键
  1. print_r(array_keys($_GET));
  • 案例5:array_values()将用户提交的数据的值组成索引数组
  1. print_r(array_values($_GET));
  • 案例6:in_array()检查用户提交数据中是否存在值’小刚’
  1. echo in_array('小刚', $_GET) ? '用户名存在' : '用户名未提交';
  • 案例7:array_search()查找用户提交数据的值中是否有admin@php.cn
  1. echo array_search('admin@php.cn', $_GET) ? '邮箱正确' : '邮箱未提交';
  • 案例8:array_unique()移除数组中重复的值,只保留第一个
  1. $array = ['name' => '小刚', 'name' => '小明', 'email' => 'admin@php.cn'];
  2. print_r(array_unique($array));
  • 案例9:array_sum()计算数组中数字之和,元素的值数字开头的数字也会计算,不能被计算的字符串记为0
  1. $arr = [5, 10, 20, '200', 'h5'];
  2. echo array_sum($arr);
  • 案例10:array_product()计算数组中所有值的乘积,不能被计算的字符串记为0
  1. echo array_product($arr);
  • 案例11:array_intersect()计算数组的交集
  1. print_r(array_intersect($array, $_GET));

栈、队列

  • 栈: 是添加与删除受限的一种数据结构,数据的增删仅允许在一端进行, LIFO,最后进最先出

用户提交的url:

http://127.0.0.1/20200713/2.php?username=%E5%B0%8F%E5%88%9A&email=admin@php.cn

  • 案例1:array_push()将数组当成一个栈,并将传入的变量压入数组的末尾。
  1. $token = sha1(md5('小刚'));
  2. array_push($_GET, $token);
  3. print_r($_GET);
  • 案例2:array_pop()弹出并返回 array 数组的最后一个单元,并将数组 array 的长度减一。
    使用此函数后会重置(reset())array 指针。
  1. echo array_pop($_GET);
  • 案例3:array_unshift() 将传入的数组单元插入到数组的开头。
  1. $key = sha1(md5('小刚'));
  2. array_unshift($_GET, $key);
  3. print_r($_GET);
  • 案例4:array_shift()将数组的第一个单元移出并作为结果返回
  1. echo array_shift($_GET);
  2. print_r($_GET);

数组排序

  • 先定义一个数组
  1. $array = [5, 10, 15, 20, 11, 2, '66l', 'Po'];
  • 案例1:sort()对数组进行排序。当本函数结束时数组单元将被从最低到最高重新安排。
  1. var_dump(sort($array));
  2. print_r($array);
  • 案例2:asort()对数组进行排序并保持索引关系
  1. var_dump(asort($array));
  2. print_r($array);
  • 案例3:arsort()对数组进行逆向排序并保持索引关系
  1. var_dump(arsort($array));
  2. print_r($array);
  • 案例4:ksort()对数组按照键名排序
  1. var_dump(ksort($array));
  2. print_r($array);
  • 案例5:krsort()对数组按照键名逆向排序
  1. var_dump(krsort($array));
  2. print_r($array);
  • 案例6:usort()使用用户自定义的比较函数对数组中的值进行排序
  1. function arr()
  2. {
  3. $arr = [5, 10, 15, 20, 11, 2, '66l', 'Po'];
  4. $arr1 = [5, 10, 15, 20, 11, 2, '66l', 'Po'];
  5. return $arr == $arr1 ? 0 : -1;
  6. }
  7. var_dump(usort($array, 'arr'));
  8. print_r($array);
  9. echo 'usort';
  • 案例7:uasort()使用用户自定义的比较函数对数组中的值进行排序并保持索引关联
  1. var_dump(uasort($array, 'arr'));
  2. print_r($array);
  3. echo 'uasort';
  • 案例8:uksort()使用用户自定义的比较函数对数组中的键名进行排序
  1. var_dump(uksort($array, 'arr'));
  2. print_r($array);
  3. echo 'uksort';
  • 案例9:natsort()用“自然排序”算法对数组排序
  1. var_dump(natsort($array));
  2. print_r($array);
  • 案例10:natcasesort()用“自然排序”算法对数组进行不区分大小写字母的排序
  1. var_dump(natcasesort($array));
  2. print_r($array);

数组增删改

  • 用户提交的url:

http://127.0.0.1/20200713/4.php?name=%E5%B0%8F%E5%88%9A&age=18&sex=%E7%94%B7&email=admin@php.cn

  • 案例1:array_slice() 返回根据 offset 和 length 参数所指定的 array 数组中的一段序列。
  1. print_r(array_slice($_GET, 2, 6));
  2. print_r(array_slice($_GET, -1, 3));
  • 案例2:array_splice()操作数组案例:
  1. $array = ['小刚', 18, '男', '180cm'];
  2. // 增:利用删除长度为0的方法新增元素
  3. // 由于被删除的元素长度为0,所以返回空数组
  4. print_r(array_splice($array, 1, 0, ['name' => '小明', '年龄' => 28]));
  5. print_r($array);
  6. // 删除数组中的一部分元素:删除索引1开始的2个元素
  7. // 返回被删除的元素
  8. // print_r(array_splice($array, 1, 2));
  9. // 原数组已改变
  10. // print_r($array);
  11. // 改:去掉数组中的某一部分并用其它值取代
  12. // 返回被提取出的元素,这里['小刚', 18]被替换
  13. // print_r(array_splice($array, 1, 2, ['小明', 20]));
  14. // echo '<br>';
  15. // 原数组已被改变
  16. // print_r($array);

数组合并

  • 案例1:array_combine()数组合并,将第一个数组的值作为键与第二个数组的值合并成一个数组。
  1. $array1 = ['name', '班级', '容貌'];
  2. $array2 = ['小明', '13期', '神仙颜值'];
  3. $array3 = array_combine($array1, $array2);
  4. print_r($array3);
  • 案例2:array_merge()将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。

返回作为结果的数组。

  1. $array4 = array_merge($array1, $array2);
  2. print_r($array4);

回调

  • 案例1:array_filter(),将元素转换后为false的值全部过滤掉

回调函数结果为数组

  1. $array = [150, 'php', true, [4, 5, 6], (new class
  2. {
  3. }), [], null, false, '', 0, '0'];
  4. $get = array_filter($array);
  5. $get = array_filter($array, function ($item) {
  6. // 返回传入的元素
  7. // return $item;
  8. // is_scalar()检测数组中的元素是否是标量
  9. // 标量变量是指那些包含了 integer、float、string 或 boolean的变量,而 array、object 和 resource 则不是标量。
  10. return is_scalar($item);
  11. // 检测数组中的元素是否是数组
  12. // return is_array($item);
  13. });
  14. print_r($get);
  • 案例2:array_map()为数组的每个元素应用回调函数

返回新数组

  1. $get = array_map(function ($item) {
  2. // 判断数组的每个元素类型是否数组
  3. return gettype($item) == 'array' ? '是数组' : '不是数组';
  4. }, $array);
  5. print_r($get);

数组与字符串的转换

  • 用户提交的url:

url:http://127.0.0.1/20200713/7.php?name=%E5%B0%8F%E5%88%9A&age=18&sex=%E7%94%B7&email=admin@php.cn

  • 案例1:implode()将一个一维数组的值转化为字符串
  1. echo implode($_GET);
  • 案例2:extract()从数组中将变量导入到当前的符号表

对每个键/值对都会在当前的符号表中建立变量

  1. echo extract($_GET);
  2. echo $name, $age, $sex, $email;
  • 案例3:compact()建立一个数组,包括变量名和它们的值
  1. $host = '127.0.0.1';
  2. $user = 'admin';
  3. $dbname = 'parse';
  4. print_r(compact('host', 'user', 'dbname'));

总结

  • 数组操作函数的返回值一定要记住;

  • 数组元素操作可以组合数据库连接字符串及查询语句;

  • 用户提交的数据过滤;

  • 掌握数组与字符串的转换技巧;

  • 掌握栈与队列的含义及工作流程。

Correcting teacher:GuanhuiGuanhui

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