PHP学习记录之数组函数

数组

PHP中的数组是一个有序映射,映射是一种把values关联到keys的类型,数组可以接受任意数量用逗号分隔符的键值对。

数组的介绍

rush:PHP;"> /* * PHP中数组可以分为: * 索引数组:下标是数字 * 关联数组:下标是字符串 * 注:PHP中数组其实不区分索引还是关联数组,都是根据键名找到对应的值 * * PHP可以同时包含integer和string类型的键名 * key:可以是一个整数integer或者字符串string * value:可以是任意类型的值 * * PHP中的key只能是integer或这string类型,如果使用其他类型会自动转换: * 1. 包含有合法整型值的字符串会被自动转换成整型(如'8'会被转换为8,但是'08'不会被转换) * 2. 浮点数会被转换成整型,小数部分会被舍去 * 3. 布尔值会被转换成整型(true转成1,false转成0) * 4. NULL会被转换成空字符串,即'' * 5. 数组和对象不能被用为键名 * * 如果数组定义中多个单元都用了同一个键名,则只会使用最后一个,之前的值都会被覆盖 * 如果没有指定键名,且键名不都为负数,新添加的元素的键名是已有键名的最大值+1 * 如果键名都为负数,那么新添加的元素键名从0开始 * */

数组的创建

'a_value','b' => 'b_value','c' => 'c_value' ); $arr4 = []; //[]用法和array()一致,同样可以创建空数组、索引数组、关联数组 $arr4[] = 'a'; //利用[]对数组进行扩展,为数组新添元素

键名类型的自动转换

'a',//1 键名为integer类型,不会自动转换 'b' => 'b',//'b' 键名为string类型,不会自动转换 '8' => 'c',//8 包含有合法整型值的字符串会自动转换成整型 3.5 => 'd',//3 键名为浮点数类型,会舍去小数,转换成integer类型 true => 'e',//1 键名为布尔类型,true转成1,false转成0 null => 'f',//'' 键名为NULL类型,会转成'' 'g' //9 没有指定键名,认为已有最大健名的值+1 ); $arr[] = 'h'; //10 新添加一个健值对,没有指定键名,认为已有最大健名的值+1 print_r($arr); //printf_r()是数组输出专用函数

通过range()和compact()快速创建

1 [1] => 2 [2] => 3 [3] => 4 [4] => 5) $arr = range('a','b','c'); print_r($arr); //Array([0] => a [1] => b [2] => c) echo chr(90),"\n"; //Z echo ord('z'),"\n"; //122 //compact()快速创建关联数组 /* * compact()函数 * array compact(mixed $varname[,mixed $...]) * 描述:建立一个数组,包括变量名和它们的值 * * 补充: * list($var1,$var2...):将数组中的值赋给一些变量 */ $username = 'zhao'; $age = '22'; $email = 'wangzhao_hb@126.com'; $arr = compact('username','age','email'); //通过将已有变量名放在函数快速生成关联数组 //Array([username] => zhao [age] => 22 [email] => wangzhao_hb@126.com) print_r($arr); list($a,$b,$c) = array(1,3);

echo "a的值为{$a},b的值为{$b},c的值为{$c}","\n"; //a的值为1,b的值为2,c的值为3

通过const和define()定义常量数组

1 [1] => 2 [2] => 3) define('ARR2',[1,3]); //define()定义常量数组 print_r(ARR2); //Array([0] => 1 [1] => 2 [2] => 3) //运用场景:自定义文件上传错误数组信息 define('CUSTOM_UPLOAD_ERRORS',[ 'ext_error' => '文件扩展名不符合规范','maxsize' => '上传文件大小不符合规范' ]); //遇到文件上传时扩展名不符合规范的时候,可调用报错

echo CUSTOM_UPLOAD_ERRORS['ext_error'],"\n"; //文件扩展名不符合规范

数组的使用

通过键名找到对应的键值 * 增、删、改、查 */ //查找:通过键名找到对应的键值 $arr1 = ['a','c','d']; $arr2 = [ 'username' => '王昭','sex' => '男' ]; echo '下标为2的值:',$arr1[2],"\n"; //下标为2的值:c echo '用户名为:',$arr2['username'],"\n"; //用户名为:王昭 $arr3 = [ //二位数组的查找 ['id'=>'1001','name'=>'张三'],['id'=>'1002','name'=>'李四'] ]; echo '下标为0的姓名:',$arr3[0]['name'],"\n"; //下标为0的姓名:张三 //添加 $arr = ['a','c']; $arr[] = 'd'; //添加元素,不指定键名,键名为数字 $arr['username'] = '王昭'; //添加元素,指定键名,键名为字符串 print_r($arr); //Array([0] => a [1] => b [2] => c [3] => d [username] => 王昭) //修改 $arr = ['a','username'=>'王昭']; $arr['username'] = '张三'; echo $arr['username'],"\n"; //张三 //删除 unset($arr['username']); //删除键名为'username'的键值对 print_r($arr); //Array([0] => a [1] => b [2] => c) unset($arr[1]); print_r($arr); //Array([0] => a [2] => c) unset($arr); //释放数组 //print_r($arr); //输出错误 Notice: Undefined variable

其他类型转换成数组

abc) settype($str,'array'); print_r($str); //Array([0] => abc)

数组运算符

rush:PHP;"> /* * 常用的数组运算符: * +:合并数组,如果键名相同,只展示左边数组的键值对 * ==:比较数组的键名和对应的键值是否相同,如果相同返回true,否则返回false * ===:既要比较键名和对应的键值及键值类型是否相同,而且顺序也要相同 * !=:比较数组的键名和对应的键值是否不相同 * !==:比较数组的键名和对应的键值和键值类型是否不相同,或者顺序不相同 * <>:和!=效果一样 * * */ $arr1 = [1,3]; $arr2 = ['a','c']; $arr3 = ['username'=>'张三','age'=>12]; $arr4 = [10=>10,11=>11]; $arrSum1 = $arr1 + $arr2; //如果键名相同,只会展示左边数组的键值对 $arrSum2 = $arr1 + $arr3; //+与数组是索引数组或者是关联数组无关 $arrSum3 = $arr1 + $arr3 + $arr4; //如果后面的数组的键名和前面的数组的键名重复,不会覆盖,会展示前面数组对应的键值 print_r($arrSum1); //Array([0] => 1 [1] => 2 [2] => 3) print_r($arrSum2); //Array([0] => 1 [1] => 2 [2] => 3 [username] => 张三 [age] => 12) print_r($arrSum3); //Array([0] => 1 [1] => 2 [2] => 3 [username] => 张三 [age] => 12 [10] => 10 [11] => 11) $arr5 = ['1'=>1,'b'=>2,'c'=>3]; $arr6 = ['b'=>2,'1'=>1,'c'=>3]; $arr7 = [1=>1,'c'=>3]; var_dump($arr5 == $arr6); //bool(true) var_dump($arr5 === $arr6); //bool(false) var_dump($arr5 === $arr7); //bool(true) var_dump($arr5 != $arr6); //bool(false) var_dump($arr5 !== $arr6); //bool(true)

总结

以上所述是小编给大家介绍的记录之数组函数,希望对大家有所帮助。程序员遇到问题都会上(编程之家jb51.cc)查找问题解答方法!如果觉得站点还不错,随手转发给程序员朋友一下!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


服务器优化必备:深入了解PHP8底层开发原理
Golang的网络编程:如何快速构建高性能的网络应用?
Golang和其他编程语言的对比:为什么它的开发效率更高?
PHP8底层开发原理揭秘:如何利用新特性创建出色的Web应用
将字符重新排列以形成回文(如果可能)在C++中
掌握PHP8底层开发原理和新特性:创建高效可扩展的应用程序
服务器性能优化必学:掌握PHP8底层开发原理
PHP8新特性和底层开发原理详解:优化应用性能的终极指南
将 C/C++ 代码转换为汇编语言
深入研究PHP8底层开发原理:创建高效可扩展的应用程序
C++程序查找法向量和迹
PHP8底层开发原理实战指南:提升服务器效能
重排数组,使得当 i 为偶数时,arr[i] >= arr[j],当 i 为奇数时,arr[i] <= arr[j],其中 j < i,使用 C++ 语言实现
Golang的垃圾回收:为什么它可以减少开发人员的负担?
C++程序:将一个数组的所有元素复制到另一个数组中
Golang:构建智能系统的基石
为什么AI开发者应该关注Golang?
在C和C++中,逗号(comma)的用法是用来分隔表达式或语句
PHP8底层开发原理解析及新特性应用实例
利用PHP8底层开发原理解析新特性:如何构建出色的Web应用