Blogger Information
Blog 53
fans 3
comment 0
visits 46630
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
php数组常用函数操作案例
emagic
Original
1213 people have browsed it

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'));

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