博客列表 >PHP 数组函数、栈与队列

PHP 数组函数、栈与队列

司马青衫
司马青衫原创
2020年07月18日 14:08:30621浏览

PHP 数组函数

  • 1.获取数组的键名:
    • array_keys($arr) 函数返回键名组成的索引数组
  • 2.获取数组的第一个键名:
    • array_key_first($arr) 函数返回数组中的第一个键名
  • 3.获取数组的最后一个键名:
    • array_key_last($arr) 函数返回数组中的最后一个键名
  • 4.判断某个键名是否在数组中:
    • array_key_exists('id', $arr) 存在函数返回 true 不存在返回 false
  • 5.获取数组的值:
    • array_values($arr) 函数返回数组的值组成的索引数组
  • 6.判断某值是否在数组中:
    • in_array('OPPO', $arr) 存在函数返回 true 不存在返回 false
  • 7.判断某值是否在数组中,并返回其键名:
    • array_search('OPPO', $arr) 存在函数返回键名 不存在返回 false
  • 8.删除数组中重复的值:
    • array_unique($arr) 函数返回一个被删除了重复值的数组
  • 9.数组的值相加求和:
    • array_sum($arr) 函数返回相加求和结果
  • 10.数组的值相乘求积:
    • array_product($arr) 函数返回相乘求积结果
  • 11.数组按值升序排列:
    • sort($arr) 函数直接对原数组进行按值升序排序 数组键名会重置
    • asort($arr) 函数直接对原数组进行按值升序排序 数组键名保留
  • 12.数组按键排列:
    • ksort($arr) 函数直接对原数组进行按键升序排列
    • krsort($arr) 函数直接对原数组进行按键降序排列
  • 13.自定义排序:利用回调函数自定义排序方法

    • usort($arr,function(){}) 函数直接对原数组按值进行用户指定的排序 不保留原数组键名
    • uasort($arr, function(){}) 函数直接对原数组按值进行用户指定的排列 保留原数组键名
    • uksort($arr,function(){}) 函数直接对原数组按键进行用户指定的排序
    • 例:
      1. <?php
      2. $arr = [1=>88, 0=>78, 3=>98, 8=>28, 6=>38];
      3. usort($arr, function($val){
      4. return ($val < 50)?1:-1; //值小于50的往后排列
      5. });
      6. print_r($arr);
      7. echo '<hr>';
      8. $arr = [1=>88, 0=>78, 3=>98, 8=>28, 6=>38];
      9. uasort($arr, function($val){
      10. return ($val < 50)?1:-1; //值小于50的往后排列
      11. });
      12. print_r($arr);
      13. echo '<hr>';
      14. $arr = [1=>88, 0=>78, 3=>98, 8=>28, 6=>38];
      15. uksort($arr, function($k1, $k2){
      16. return ($k1 - $k2); //按键名从小到大排列
      17. });
      18. print_r($arr);
      19. echo '<hr>';
  • 14.自然排序:数字从 1 到 9 的排序方法 字母从 a 到 z 的排序方法 短者优先
    • natsort($arr) 函数直接对原数组进行自然排序
  • 15.从数组中取出一部分:
    • rray_slice($arr, 起始位置, 取出个数) 函数返回取出的指定部分形成的数组
  • 16.数组的增删改:
    • array_splice($arr, 起始位置, 删除个数, 要替换的数组)
    • 函数返回被删除的元素组成的数组 改动后的数组保存在原数组中
    • 例:
      1. <?php
      2. $arr = [1=>88, 0=>78, 3=>98, 8=>28, 6=>38];
      3. $res = array_splice($arr, 1, 0, ['增', '加']); //增加两个元素
      4. print_r($res);
      5. print_r($arr);
      6. echo '<hr>';
      7. $res = array_splice($arr, 1, 2); //删除前面增加的部分
      8. print_r($res);
      9. print_r($arr);
      10. echo '<hr>';
      11. $res = array_splice($arr, 1, 2, ['修', '改']); //修改部分元素
      12. print_r($res);
      13. print_r($arr);
      14. echo '<hr>';
  • 17.数组合并:
    • array_combine($key,$value) 函数将两个数组合并成新的数组
    • 若合并成功 则前一个数组为新数组的键 后一个数组为新数组的值,若不成功 则返回 false
    • array_merge($key, $value, [100,200]) 函数将多个数组合并成一个新的数组 函数返回合并后的新数组
    • 例:
      1. <?php
      2. $key = ['id', 'name', 'password'];
      3. $value = [100, 'root', 'root'];
      4. $res = array_combine($key,$value);
      5. print_r($res);
      6. echo '<hr>';
      7. $res = array_merge($key, $value, [100,200]);
      8. print_r($res);
  • 18.数组与回调函数:
    • 1.用回调函数过滤数组中的元素:
      • array_filter($arr, function(){}) 函数返回通过回调函数返回值为 true 的数组 其键名与原数组键名相同
    • 2.对数组中的每个元素都进行一次回调函数处理:
      • array_map(function(){}, $arr) 函数返回经回调函数处理之后的新数组
    • 例:
      1. <?php
      2. $arr = ['id', 100, 'name', 'root', 'password', 'root', 200];
      3. $res = array_filter($arr, function($val){
      4. return is_string($val)?$val:false;
      5. });
      6. print_r($res);
      7. echo '<hr>';
      8. $res = array_map(function($val){
      9. return is_numeric($val)?0:$val;
      10. },$arr);
      11. print_r($res);
  • 19.关联数组与变量:

    • extract($arr) 函数将关联数组转为一组变量 执行之后可以直接使用关联数组的键名访问变量
    • compact('var1', 'var2', ...) 函数将一组变量转为关联数组 函数返回一组关联数组 变量名为键名 变量值为数组的值
    • 例:
      1. <?php
      2. $arr = ['brand'=>'xiaomi', 'model'=>'mix2s', 'price'=>3299];
      3. extract($arr);
      4. echo $brand,'--',$model,'--',$price;
      5. echo '<hr>';
      6. $res = compact('brand', 'model', 'price');
      7. print_r($res);

      PHP 栈与队列

  • 栈:先进后出的数据结构

    • 只在数组的头部或者尾部进行增删元素的操作
  • 队列:先进先出的数据结构

    • 对数组元素一头进行增在另一头进行删的操作
  • array_unshift()在数组开头插入一个或多个数据

  • array_shift()在数组头部删除一个或多个数据
  • array_push()在数据尾部插入一个或多个数据
  • arrsy_pop()在数据尾部删除一个或多个数据
  • 例:
    1. <?php
    2. $stack = [];
    3. //在stack数组的头部进行增删数据
    4. array_unshift($stack, 1);
    5. array_unshift($stack, 2);
    6. array_unshift($stack, 3);
    7. print_r($stack);
    8. echo array_shift($stack);
    9. echo array_shift($stack);
    10. echo array_shift($stack);
    11. echo '<hr>';
    12. $stack = [];
    13. //在stack数组的尾部进行增删数据
    14. array_push($stack, 1);
    15. array_push($stack, 2);
    16. array_push($stack, 3);
    17. print_r($stack);
    18. echo array_pop($stack);
    19. echo array_pop($stack);
    20. echo array_pop($stack);
    21. echo '<hr>';
    22. $queue = [];
    23. //在queue数组的头部进行增加数据 尾部进行删除数据
    24. array_unshift($queue, 1);
    25. array_unshift($queue, 2);
    26. array_unshift($queue, 3);
    27. print_r($queue);
    28. echo array_pop($queue);
    29. echo array_pop($queue);
    30. echo array_pop($queue);
    31. echo '<hr>';
    32. //在queue数组的尾部进行增加数据 头部进行删除数据
    33. array_push($queue, 1);
    34. array_push($queue, 2);
    35. array_push($queue, 3);
    36. print_r($queue);
    37. echo array_shift($queue);
    38. echo array_shift($queue);
    39. echo array_shift($queue);
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议
司马青衫2020-07-18 15:36:472楼
好的老师,多谢指点。
灭绝师太2020-07-18 15:30:501楼
extract()可以用于多字段表单数据提交时,在后端脚本接收数据。extract($_POST)