Blogger Information
Blog 30
fans 0
comment 2
visits 29453
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP 数组函数、栈与队列
司马青衫
Original
618 people have browsed it

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);
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
2 comments
司马青衫 2020-07-18 15:36:47
好的老师,多谢指点。
2 floor
灭绝师太 2020-07-18 15:30:50
extract()可以用于多字段表单数据提交时,在后端脚本接收数据。extract($_POST)
1 floor
Author's latest blog post