博客列表 >php数组常用函数操作案例

php数组常用函数操作案例

emagic
emagic原创
2020年07月18日 22:56:211215浏览

0713作业

php数组常用函数

1. array_keys() :获取数组中的所有键名,并返回一个新的数组

  1. <?php
  2. $arr = ["lat" => 23.2215, "lng" => 123.123, '省市' => '广东'];
  3. print_r(array_keys($arr));

2. array_key_exists()检索给定的键名是否存在数组中,返回布尔值

`array_key_exists(“target”,$arr)

  1. <?php
  2. $arr = ["lat" => 23.2215, "lng" => 123.123, '省市' => '广东'];
  3. echo array_key_exists('lat', $arr) ? '成功' : '请输入正确的lat';

3. array_key_first()/array_key_last() 返回数组中第一个元素/最后一个的键名,用于数组较大的情况

  1. <?php
  2. $arr = ["lat" => 23.2215, "lng" => 123.123, '省市' => '广东'];
  3. echo array_key_first($arr), '<hr>';
  4. echo array_key_last($arr);

4. array_values() 获取数组所有的值(返回的是一个索引数组)

  1. <?php
  2. $arr = ["lat" => 23.2215, "lng" => 123.123, 'province' => '广东', 'city' => '佛山', "code" => 1];
  3. print_r(array_values($arr));
  4. echo '<hr>';
  • array_search():找到了返回元素值对应的键名,找不到返回false

  • arrar_unique():删除重复值

5. array_sum()/array_product 数组内的数组相加/相乘,字符串会被转换为整数(直到第一个遇见的非数字字符,非数字字符后面如果有数字的也不参加了)

  1. <?php
  2. $arr2 = [1, 2, 3, 4, '5dd6'];
  3. echo array_sum($arr2);
  4. //数组内的数组相加,字符串会被转换为整数,
  5. echo "
  6. ";
  7. echo array_product($arr2);

栈与队列

  • 栈:后进先出(LIFO-last in first out):最后插入的元素最先出来
  • 栈的插入操作array_push()叫做进栈,删除操作array_pop()叫做出栈。

6. 栈与队列

函数 功能
array_push() 将一个或多个元素压入数组栈的末尾(入栈),返回入栈元素的个数;
array_pop() 删除数组中的最后一个元素,出栈,返回删除的元素值,当没有元素时,则返回null。
array_unshift() 向数组插入新元素。新数组的值将被插入到数组的开头,队操作
array_shift() 删除数组中的第一个元素,并返回被删除元素的值,队操作
  1. <?php
  2. //栈与队列
  3. //栈是添加与删除受限的一种数据结构,数据的增删仅允许在一端进行,LIFO,最后进先出
  4. $arr = [];
  5. //array_push:向数组尾部插入一个或多个元素,返回值是数组的长度
  6. echo '入栈:' . array_push($arr, 1, 3, 5);
  7. print_r($arr);
  8. echo '<hr>';
  9. //array_pop():函数用来删除数组末尾的元素(出栈)返回值是删除的值
  10. echo '出栈pop:' . array_pop($arr);
  11. echo '<hr>';
  12. echo '出栈pop:' . array_pop($arr);
  13. echo '<hr>';
  14. echo '出栈pop:' . array_pop($arr);
  15. echo '<hr>';
  16. echo '出栈pop没有了会弹出:', var_dump(array_pop($arr));
  17. echo '<hr>';
  18. //队列:先进先出
  19. //array_unshift():函数用于向数组插入新元素。新数组的值将被插入到数组的开头
  20. echo '在头部array_unshift新增元素:' . array_unshift($arr, 2, 4, 6) . '';
  21. print_r($arr);
  22. echo '<hr>';
  23. echo '在队的头部array_shift删除元素:' . array_shift($arr);
  24. echo '<hr>';
  25. echo '在队的头部array_shift删除元素:' . array_shift($arr);
  26. echo '<hr>';
  27. echo '在队的头部array_shift删除元素:' . array_shift($arr);
  28. //array_shift():删除数组中的第一个元素,并返回被删除元素的值

7. 数组排序

函数 功能
sort() 升序排列,键名重新生成
asort() 按照值进行升序排列,键名不会重新生成
ksort() 按键名进行升序排列
krsort() 按键名进行降序排列
usort() 自定义排序 usort(数组名,回调函数),回调中可以操作数组后再返回
natsort() 自然排序
  • php中的sort()将字符自动转换为零,会排在数字时代前面
  1. <?php
  2. $model = ["lat" => 23.2215, "lng" => 123.123, 'province' => '广东', 'city' => '佛山', "code" => 1];
  3. print_r($model);
  4. echo "<hr>";
  5. $arr=$model;
  6. sort($arr);
  7. print_r($arr);
  8. echo "<hr>";
  9. // 按照值进行升序排列,键名不会重新生成
  10. $brr=$model;
  11. asort($brr);
  12. print_r($brr);
  13. echo "<hr>";
  14. // 按键名进行升序排列
  15. $crr=$model;
  16. ksort($crr);
  17. // 按键名进行升序排列
  18. print_r($crr);
  19. krsort($crr);
  20. echo "<hr>";
  21. // 按键名进行降序排列
  22. print_r($crr);
  23. echo "<hr>";

  1. <?php
  2. echo "原始数组:";
  3. $pics = ['pic5.jpg', 'pic8.jpg', 'pic12.jpg', 'pic9.jpg','pic1.jpg'];
  4. print_r($pics);
  5. echo "<hr>";
  6. //普通数组排序
  7. sort($pics);
  8. print_r($pics);
  9. echo "<hr>";
  10. // 用natsort()自然算法对数组排序
  11. natsort($pics);
  12. print_r($pics);

8. array_slice():从数组中取出一部分元素,不影响原始数组

  • array_slice(数组,起始位置,取的个数)
  • 第三个参数不设置默认截取到末尾
  • 支持负数从后往前数取数据
  1. <?php
  2. $model = ["lat" => 23.2215, "lng" => 123.123, 'province' => '广东', 'city' => '佛山', "code" => 1];
  3. print_r($model);
  4. echo "<hr>";
  5. $res = array_slice($model,1,2);
  6. print_r($res);
  7. echo "<hr>";
  8. $res = array_slice($model,-3,2);
  9. print_r($res);

9. array_splice():从数组中移除并返回指定的元素组成的数组,实现增删改

  • 删除:array_splice(要操作的数组, 从什么位置开始操作 , 操作几个)
  • 替换:array_splice(要操作的数组, 从什么位置开始操作 , 操作几个 ,[替换的元素])
  • 新增:array_splice(要操作的数组, 从什么位置开始操作 , 0,[替换的元素]) 第三个参数设0就不删只增
  • 返回结果是被删除或者被替换的元素组成的数组
  • 操作会影响原始数组
  1. <?php
  2. $arr = [1,2,3,4,5,6,7,8,9,10];
  3. print_r($arr);
  4. echo "<hr>";
  5. //删除
  6. //array_splice(要操作的数组,从什么位置开始操作,操作几个)
  7. //返回结果是被删除元素组成的数组
  8. $res = array_splice($arr,1,2);
  9. print_r($res);
  10. echo "<hr>";
  11. //操作影响原始数组
  12. print_r($arr);
  13. //替换
  14. echo "<hr>";
  15. $res = array_splice($arr,1,2,[400,500]);
  16. print_r($res);
  17. echo "<hr>";
  18. print_r($arr);

10. array_combine():合并数组

  1. <?php
  2. $arr = ['力量','敏捷','智力','体能'];
  3. $value = [120,230,340,450];
  4. $res = array_combine($arr,$value);
  5. print_r($res);

11.array_merge()函数用于把一个或多个数组合并为一个数组,键名相同会覆盖

  1. <?php
  2. $arr = ['力量'=>120,'敏捷'=>230,'智力'=>340,'体能'=>450];
  3. $value = ['力量'=>12000,'敏捷'=>230000,'内息'=>50000];
  4. $res = array_merge($arr,$value);
  5. //键名相同会覆盖,array_merge($arr,$value)后面的覆盖前面的
  6. print_r($res);

12. array_filter()只返回元素可以转为true的元素

  1. <?php
  2. $arr = [10,'string_php','1',true,[4,5,6],(new class{}),'0',0,false,null,'',[]];
  3. //array_filter() 只返回元素可以转为true的元素
  4. $result = array_filter($arr);
  5. print_r($result);
  6. // '0', 0,false, null,'',[]: 转为false

13. array_map()为数组中的每个元素应用指定的回调函数进行处理,并返回新数组

  1. <?php
  2. //array_map():为数组中的每个元素应用指定的回调函数进行处理,并返回新数组
  3. $arr = ['username',[1,2,3],(new class{public $name = 'admin';public $age = 18;}),100];
  4. $res = array_map(function($item){
  5. // 示例:如果数组元素是对象,则输出它的属性,如果是数组,则转为字符串,否则直接输出
  6. switch (gettype($item)){
  7. case 'object':
  8. $item = get_object_vars($item);
  9. $item = implode(',',$item);
  10. break;
  11. case 'array':
  12. $item = implode(',',$item);
  13. }
  14. return $item;
  15. },$arr);
  16. print_r($res);

14. extract() 将关联数组拆分为变量!!!!!

  • extract()将关联数组拆分为变量,拆分后变量名即为关联的键名,一次性批量完成,无需一个个创建
  • 应用场景如表单提交等过来的数组解析为一个个变量以便处理
  1. <?php
  2. //extract():将关联数组拆分为变量
  3. $config = ['type'=>'mysql','host'=>'localhost','dbname' => 'xp_cms','charset'=>'utf-8','username' => 'root','password' => '123456'];
  4. extract($config);
  5. echo $username,'<hr>';
  6. echo $password,'<hr>';
  7. echo $dbname,'<hr>';

15. compact():将一组变量变为关联数组

  • compact()是 extract()的逆操作,将一组变量变为关联数组
  • 注意参数的写法是写键名字符串而不是传变量
  1. <?php
  2. $point = '在线地图点1';
  3. $lng = 123.2123;
  4. $lat = 22.6445;
  5. $desc = "xcfvsdfsdfsdf";
  6. //注意参数的写法是写键名字符串而不是传变量
  7. print_r(compact('point', 'lat', 'lng','desc'));

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