当前位置:首页 > PHP教程 > php数组 > 列表

PHP学习记录之数组函数

发布:smiling 来源: PHP粉丝网  添加日期:2021-09-23 17:02:14 浏览: 评论:0 

这篇文章主要介绍了PHP学习记录之数组函数,php中的数组是一个有序映射,数组可以接受任意数量用逗号分隔符的键值对,下面结合代码实例给大家接受,感兴趣的朋友一起看看吧。

数组

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

数组的介绍

 * 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开始

数组的创建

  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); 
  36. 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. //遇到文件上传时扩展名不符合规范的时候,可调用报错 
  11. 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)

Tags: PHP学习记录 PHP数组函数

分享到: