设为首页收藏本站
网站公告 | 这是第一条公告
     

 找回密码
 立即注册
缓存时间06 现在时间06 缓存数据 只有内心祥和,才不会被生活所左右,所以一定要从容淡泊。

只有内心祥和,才不会被生活所左右,所以一定要从容淡泊。

查看: 1263|回复: 3

PHP学习记录之数组函数

[复制链接]

  离线 

TA的专栏

  • 打卡等级:热心大叔
  • 打卡总天数:232
  • 打卡月天数:0
  • 打卡总奖励:3438
  • 最近打卡:2025-03-09 17:54:20
等级头衔

等級:晓枫资讯-上等兵

在线时间
0 小时

积分成就
威望
0
贡献
428
主题
389
精华
0
金钱
4703
积分
891
注册时间
2023-1-13
最后登录
2025-5-31

发表于 2023-2-13 01:11:41 | 显示全部楼层 |阅读模式
数组
php中的数组是一个有序映射,映射是一种把values关联到keys的类型,数组可以接受任意数量用逗号分隔符的键值对。
数组的介绍
  1. /*
  2. * php中数组可以分为:
  3. * 索引数组:下标是数字
  4. * 关联数组:下标是字符串
  5. * 注:php中数组其实不区分索引还是关联数组,都是根据键名找到对应的值
  6. *
  7. * php可以同时包含integer和string类型的键名
  8. * key:可以是一个整数integer或者字符串string
  9. * value:可以是任意类型的值
  10. *
  11. * php中的key只能是integer或这string类型,如果使用其他类型会自动转换:
  12. * 1. 包含有合法整型值的字符串会被自动转换成整型(如'8'会被转换为8,但是'08'不会被转换)
  13. * 2. 浮点数会被转换成整型,小数部分会被舍去
  14. * 3. 布尔值会被转换成整型(true转成1,false转成0)
  15. * 4. NULL会被转换成空字符串,即''
  16. * 5. 数组和对象不能被用为键名
  17. *
  18. * 如果数组定义中多个单元都用了同一个键名,则只会使用最后一个,之前的值都会被覆盖
  19. * 如果没有指定键名,且键名不都为负数,新添加的元素的键名是已有键名的最大值+1
  20. * 如果键名都为负数,那么新添加的元素键名从0开始
  21. *
  22. */
复制代码
数组的创建
  1. $arr1 = array(); //创建一个空数组
  2. $arr2 = array(1, 2, 3); //创建一个索引数组
  3. $arr3 = array( //创建一个关联数组
  4.   'a' => 'a_value',
  5.   'b' => 'b_value',
  6.   'c' => 'c_value'
  7. );
  8. $arr4 = []; //[]用法和array()一致,同样可以创建空数组、索引数组、关联数组
  9. $arr4[] = 'a'; //利用[]对数组进行扩展,为数组新添元素
复制代码
键名类型的自动转换
  1. $arr = array(
  2.   1 => 'a',      //1   键名为integer类型,不会自动转换
  3.   'b' => 'b',     //'b'  键名为string类型,不会自动转换
  4.   '8' => 'c',     //8   包含有合法整型值的字符串会自动转换成整型
  5.   3.5 => 'd',     //3   键名为浮点数类型,会舍去小数,转换成integer类型
  6.   true => 'e',    //1   键名为布尔类型,true转成1,false转成0
  7.   null => 'f',    //''  键名为NULL类型,会转成''
  8.   'g'         //9   没有指定键名,默认为已有最大健名的值+1
  9. );
  10. $arr[] = 'h';      //10  新添加一个健值对,没有指定键名,默认为已有最大健名的值+1
  11. print_r($arr); //printf_r()是数组输出专用函数
复制代码
通过range()和compact()快速创建
  1. //range()快速创建下标连续的索引数组
  2. ///*
  3. * range()函数
  4. * array range(mixed $start, mixed $limit[, number $step=1])
  5. * 描述:建立一个包含指定范围单元的,且下标连续的索引数组
  6. * start:序列的第一个值
  7. * limit:序列结束于limit的值
  8. * step:如果给出了step的值,它将被作为单元之间的步进值,如果未指定,默认为1
  9. *
  10. * 补充:
  11. * string chr(int $value):将数字作为ASCII转成成字符
  12. * int ord(string $value):输出字符的ASCII
  13. */
  14. $arr = range(1, 5);
  15. print_r($arr); //Array([0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5)
  16. $arr = range('a', 'b', 'c');
  17. print_r($arr); //Array([0] => a [1] => b [2] => c)
  18. echo chr(90), "\n"; //Z
  19. echo ord('z'), "\n"; //122
  20. //compact()快速创建关联数组
  21. /*
  22. * compact()函数
  23. * array compact(mixed $varname[, mixed $...])
  24. * 描述:建立一个数组,包括变量名和它们的值
  25. *
  26. * 补充:
  27. * list($var1, $var2...):将数组中的值赋给一些变量
  28. */
  29. $username = 'zhao';
  30. $age = '22';
  31. $email = 'wangzhao_hb@126.com';
  32. $arr = compact('username', 'age', 'email'); //通过将已有变量名放在函数中快速生成关联数组
  33. //Array([username] => zhao [age] => 22 [email] => wangzhao_hb@126.com)
  34. print_r($arr);
  35. list($a, $b, $c) = array(1, 2, 3);
复制代码
echo "a的值为{$a}, b的值为{$b}, c的值为{$c}", "\n";  //a的值为1, b的值为2, c的值为3
通过const和define()定义常量数组
  1. const ARR1 = [1, 2, 3]; //const定义常量数组
  2. print_r(ARR1); //Array([0] => 1 [1] => 2 [2] => 3)
  3. define('ARR2', [1, 2, 3]); //define()定义常量数组
  4. print_r(ARR2); //Array([0] => 1 [1] => 2 [2] => 3)
  5. //运用场景:自定义文件上传错误数组信息
  6. define('CUSTOM_UPLOAD_ERRORS', [
  7.   'ext_error' => '文件扩展名不符合规范',
  8.   'maxsize' => '上传文件大小不符合规范'
  9. ]);
  10. //遇到文件上传时扩展名不符合规范的时候,可调用报错
复制代码
echo CUSTOM_UPLOAD_ERRORS['ext_error'], "\n";  //文件扩展名不符合规范
数组的使用
  1. /*
  2. * => 通过键名找到对应的键值
  3. * 增、删、改、查
  4. */
  5. //查找:通过键名找到对应的键值
  6. $arr1 = ['a', 'b', 'c', 'd'];
  7. $arr2 = [
  8.   'username' => '王昭',
  9.   'sex' => '男'
  10. ];
  11. echo '下标为2的值:', $arr1[2], "\n"; //下标为2的值:c
  12. echo '用户名为:',$arr2['username'], "\n"; //用户名为:王昭
  13. $arr3 = [ //二位数组的查找
  14.   ['id'=>'1001', 'name'=>'张三'],
  15.   ['id'=>'1002', 'name'=>'李四']
  16. ];
  17. echo '下标为0的姓名:', $arr3[0]['name'], "\n"; //下标为0的姓名:张三
  18. //添加
  19. $arr = ['a', 'b', 'c'];
  20. $arr[] = 'd'; //添加元素,不指定键名,键名为数字
  21. $arr['username'] = '王昭'; //添加元素,指定键名,键名为字符串
  22. print_r($arr); //Array([0] => a [1] => b [2] => c [3] => d [username] => 王昭)
  23. //修改
  24. $arr = ['a', 'b', 'c', 'username'=>'王昭'];
  25. $arr['username'] = '张三';
  26. echo $arr['username'], "\n"; //张三
  27. //删除
  28. unset($arr['username']); //删除键名为'username'的键值对
  29. print_r($arr); //Array([0] => a [1] => b [2] => c)
  30. unset($arr[1]);
  31. print_r($arr); //Array([0] => a [2] => c)
  32. unset($arr); //释放数组
  33. //print_r($arr); //输出错误 Notice: Undefined variable
复制代码
其他类型转换成数组
  1. /*
  2. * 如果将一个值转换为数组,将得到一个仅有一个元素的数组,其下标为0,该元素即为此标量的值;
  3. * 对象可以转换为数组,但是注意尽量避免这样转换,因为会导致一些意想不到的效果。
  4. * 注意:null转换成数组是空数组[]
  5. *
  6. * 临时转换
  7. * (array)$var
  8. *
  9. * 永久转换
  10. * settype($var, 'array')
  11. */
  12. $str = 'abc';
  13. $arr = (array)$str;
  14. print_r($arr); //Array([0] => abc)
  15. settype($str, 'array');
  16. print_r($str); //Array([0] => abc)
复制代码
数组运算符
  1. /*
  2. * 常用的数组运算符:
  3. * +:合并数组,如果键名相同,只展示左边数组的键值对
  4. * ==:比较数组的键名和对应的键值是否相同,如果相同返回true,否则返回false
  5. * ===:既要比较键名和对应的键值及键值类型是否相同,而且顺序也要相同
  6. * !=:比较数组的键名和对应的键值是否不相同
  7. * !==:比较数组的键名和对应的键值和键值类型是否不相同,或者顺序不相同
  8. * <>:和!=效果一样
  9. *
  10. *
  11. */
  12. $arr1 = [1, 2, 3];
  13. $arr2 = ['a', 'b', 'c'];
  14. $arr3 = ['username'=>'张三', 'age'=>12];
  15. $arr4 = [10=>10, 11=>11];
  16. $arrSum1 = $arr1 + $arr2; //如果键名相同,只会展示左边数组的键值对
  17. $arrSum2 = $arr1 + $arr3; //+与数组是索引数组或者是关联数组无关
  18. $arrSum3 = $arr1 + $arr3 + $arr4; //如果后面的数组的键名和前面的数组的键名重复,不会覆盖,会展示前面数组对应的键值
  19. print_r($arrSum1); //Array([0] => 1 [1] => 2 [2] => 3)
  20. print_r($arrSum2); //Array([0] => 1 [1] => 2 [2] => 3 [username] => 张三 [age] => 12)
  21. print_r($arrSum3); //Array([0] => 1 [1] => 2 [2] => 3 [username] => 张三 [age] => 12 [10] => 10 [11] => 11)
  22. $arr5 = ['1'=>1, 'b'=>2, 'c'=>3];
  23. $arr6 = ['b'=>2, '1'=>1, 'c'=>3];
  24. $arr7 = [1=>1, 'b'=>2, 'c'=>3];
  25. var_dump($arr5 == $arr6); //bool(true)
  26. var_dump($arr5 === $arr6); //bool(false)
  27. var_dump($arr5 === $arr7); //bool(true)
  28. var_dump($arr5 != $arr6); //bool(false)
  29. var_dump($arr5 !== $arr6); //bool(true)
复制代码
总结
以上所述是小编给大家介绍的PHP学习记录之数组函数,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对晓枫资讯网站的支持!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
晓枫资讯-科技资讯社区-免责声明
免责声明:以上内容为本网站转自其它媒体,相关信息仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同其观点或证实其内容的真实性。
      1、注册用户在本社区发表、转载的任何作品仅代表其个人观点,不代表本社区认同其观点。
      2、管理员及版主有权在不事先通知或不经作者准许的情况下删除其在本社区所发表的文章。
      3、本社区的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,举报反馈:点击这里给我发消息进行删除处理。
      4、本社区一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
      5、以上声明内容的最终解释权归《晓枫资讯-科技资讯社区》所有。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

  • 打卡等级:常驻代表
  • 打卡总天数:30
  • 打卡月天数:0
  • 打卡总奖励:402
  • 最近打卡:2025-03-15 20:15:34
等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
452
积分
64
注册时间
2023-1-16
最后登录
2025-3-15

发表于 2024-1-23 21:32:41 | 显示全部楼层
感谢楼主分享。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
22
积分
24
注册时间
2022-12-29
最后登录
2022-12-29

发表于 2025-3-13 12:12:53 | 显示全部楼层
顶顶更健康!!!
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
20
积分
20
注册时间
2022-12-27
最后登录
2022-12-27

发表于 2025-3-20 05:58:44 | 显示全部楼层
感谢楼主,顶。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~
严禁发布广告,淫秽、色情、赌博、暴力、凶杀、恐怖、间谍及其他违反国家法律法规的内容。!晓枫资讯-社区
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1楼
2楼
3楼
4楼

手机版|晓枫资讯--科技资讯社区 本站已运行

CopyRight © 2022-2025 晓枫资讯--科技资讯社区 ( BBS.yzwlo.com ) . All Rights Reserved .

晓枫资讯--科技资讯社区

本站内容由用户自主分享和转载自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

如有侵权、违反国家法律政策行为,请联系我们,我们会第一时间及时清除和处理! 举报反馈邮箱:点击这里给我发消息

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表