php数组的创建和使用,数组常用函数
数组的概念一维数组的创建和使用1.直接将变量声明为数组元素2.通过array()函数来创建一维数组3.数组的元素值的访问4.数组元素的赋值方式5.数组的注意事项 二维数组的创建和使用1.二维数组的创建2.二维数组的数组元素值访问3.二维元素的数组元素赋值 数组的常用函数1.快速创建数组的函数2.数组统计函数3.数组指针函数4.数组和变量间的转换函数5.数组遍历的常用函数6.数组检索函数7.数组排序函数8.数组集合运算函数9.php数组提供的数据结构函数(栈,队列)数组的概念
数组是一组批量的数据存储空间,且这一段空间是连续的,每个存储空间都存储了一个数组元素。元素之间通过使用 “键” 来识别,通过数组名和 “键” 来组合访问。php中的数组的键值可以是字符型,整型,浮点型,布尔型,对象 也可以嵌套数组形成二维数组。但是一般情况下,为了便于调试和开发,数组的键大多都是字符型和整型(太灵活随意了也不好,还得严格一点)。php中的数组可以自由扩充大小。一维数组的创建和使用
1.直接将变量声明为数组元素
不指定元素的键,则默认键名从0开始递增<?php $colors[] =["black","blue","yellow"];var_dump($colors);?>
2.在声明时指定元素的键 通过 键=>值的方式
<?php// 这里实际上是将这5个元素全部都填充到了数组的第一维,后面如果添加的话,就会使数组变成多维数组$peoples[] = ["p1"=>"张三","p2"=>"李四","p3"=>"王五","p4"=>false,"p5"=>null];var_dump($peoples);?>
如果添加数组元素时不指定键,则默认使用当前数组中的已有元素最大整数键上面加1。
<?php //上面一开始初始化数组时,相当于 0=>[5个元素],所以这一次应该是 1=>["白一"]$peoples[] = "白一";// 现在其实已经变成了三维数组$peoples["p6"] = "猴六";var_dump($peoples);?>
下面是在同一维数组中,添加数组元素:
<?php $names["name1"] = "夜雨声烦";$names["name2"] = "大漠孤烟";$names["name3"] = "一叶知秋";$names["name4"] = "长河落日";var_dump($names);$names["addName"] = "魔欲乘风";var_dump($names);?>
2.通过array()函数来创建一维数组
array()函数可以用键值对的方式并且以逗号分隔来对数组初始化 ,array(“key”=>“value”,“key”=>“value”,);
<?php$humans = array("h1"=>"张三","h2"=>"李四","h3"=>"王五","h4"=>"赵六","h5"=>"马奇");var_dump($humans);//这里你就能看到与上面自己手动初始化的不同了// 使用array()函数,默认是在一个一维数组里面添加$humans["h6"] = "猴六";var_dump($humans);?>
使用array()函数,默认是在一个一维数组里面添加(末尾追加的方式)
3.数组的元素值的访问
通过 $数组名[键名] 的方式来访问数组元素
<?php$arr_test = array("demo1"=>"zhang","demo2"=>"san");var_dump($arr_test["demo1"]);//string(5) "zhang"?>
4.数组元素的赋值方式
在php数组中,数组元素的赋值也和变量一样,分为两种传值赋值和传地址赋值。
1.传值赋值
传值方式不会改变原本的数组内容
<?php$src_arr = array("t1"=>"demo1","t2"=>"demo2");var_dump($src_arr); // array(2) {["t1"]=> string(5) "demo1" ["t2"]=> string(5) "demo2"}$dest_arr = $src_arr;var_dump($dest_arr);// array(2) {["t1"]=> string(5) "demo1" ["t2"]=> string(5) "demo2"}$dest_arr["t1"] = "t1";var_dump($src_arr);// array(2) {["t1"]=> string(5) "demo1" ["t2"]=> string(5) "demo2"}var_dump($dest_arr);// array(2) {["t1"]=> string(2) "t1" ["t2"]=> string(5) "demo2"}?>
2.传地址赋值
传地址方式会改变原有的数组内容
<?php $src_arr1 = array("t1"=>"demo1","t2"=>"demo2");$dest_arr1 = &$src_arr1;var_dump($src_arr1);//array(2) {["t1"]=> string(5) "demo1" ["t2"]=> string(5) "demo2"}var_dump($dest_arr1);//array(2) {["t1"]=> string(5) "demo1" ["t2"]=> string(5) "demo2"}$dest_arr1["t1"] = "t1";var_dump($src_arr1);//array(2) {["t1"]=> string(2) "t1" ["t2"]=> string(5) "demo2"}var_dump($dest_arr1);//array(2) {["t1"]=> string(2) "t1" ["t2"]=> string(5) "demo2"}?>
5.数组的注意事项
数组的注意事项:
如果数组元素的键是一个浮点数,那么它会被强制转换为整数。比如 1.3 --> 1 。如果是布尔型,则 true -> 1,false ->0。如果数组元素的键是一个字符串,且它的内容就是一个数字,则它会被强制转换为整型的数字( “123.5” -> 123)。数组元素的键是唯一的,不能重复,如果重复则会覆盖之前的内容。数组元素的键,要尽量避免使用未定义的常量和变量,因为其底层php预处理器会将这些未定义的变量和常量转换为字符串,浪费资源,且可读性不高。
二维数组的创建和使用
二维数组的创建,其实就是嵌套使用array()函数,然后其数组元素的访问和赋值与一维数组是一模一样的过程。
1.二维数组的创建
嵌套使用array()函数,生成二维数组。
<?php$ds_array = array("st1"=>array("姓名"=>"叶秋","性别"=>"男"),"st2"=>array("姓名"=>"小白","性别"=>"女"));var_dump($ds_array);?>
2.二维数组的数组元素值访问
二维数组值的访问,就是$数组名[行][列] $数组名[一维键名][二维键名]
。
<?php$ds_array = array("st1"=>array("姓名"=>"叶秋","性别"=>"男"),"st2"=>array("姓名"=>"小白","性别"=>"女"));var_dump($ds_array);var_dump($ds_array["st1"]);// array(2) { ["姓名"]=> string(6) "叶秋" ["性别"]=> string(3) "男"}var_dump($ds_array["st1"]["姓名"]);//string(6) "叶秋"?>
3.二维元素的数组元素赋值
二维数组的数组元素赋值,和一维数组是一模一样的,我就简单的举几个例子
<?php$ds_array = array("st1"=>array("姓名"=>"叶秋","性别"=>"男"),"st2"=>array("姓名"=>"小白","性别"=>"女"));$ds_array["st1"] = array("姓名"=>"张三","性别"=>"男");$ds_array["st3"] = array("姓名"=>"吕小布","性别"=>"男");$ds_array["st2"]["姓名"] = "黄月英";var_dump($ds_array);?>
传值和传地址赋值也是和一维数组一模一样,就pass掉啦。
传地址赋值会导致原本的数组内容发改变,同一个数组被两个变量指向,传值赋值不会,它相当于是一个副本copy.
数组的常用函数
php数组十分灵活和强大,它的键值可以是多种类型,而且它的键可以是连续或者不连续的。php为数组提供了丰富且功能强大的数组处理函数。(API调用工程师,哈哈哈)。
1.快速创建数组的函数
2.数组统计函数
3.数组指针函数
php为每一个创建的数组,都建立了一个对应的“内部指针系统”。“内部指针系统”会为每一个新建的php数组,自动的建立一个“当前指针”指向数组的第一个元素,每个元素内部有一个指针(next)指向下一个元素,一个指针(prev)指向上一个元素。
4.数组和变量间的转换函数
5.数组遍历的常用函数
foreach(array as v a l u e ) 每次循环中,“当前指针”所指元素的“值”赋给变量 value) 每次循环中,“当前指针”所指元素的“值”赋给变量 value)每次循环中,“当前指针”所指元素的“值”赋给变量value,然后移动数组array的指针,使“当前指针”指向下一个元素,直至数组array中的最后一个元素(最后一个元素的当前指针为空)。
foreach(array as k e y = > key=> key=>value)
每次循环中,“当前指针”所指元素的键名赋给变量 k e y , 元素的“值”赋给变量 key,元素的“值”赋给变量 key,元素的“值”赋给变量value,然后移动数组array的指针,使“当前指针”指向下一个元素,直至数组array中的最后一个元素(最后一个元素的当前指针为空)。
<?php$info =array('coffee','tea','water');foreach ($info as $value){echo $value."";//coffeeteawater }foreach ($info as $key=>$value){echo $key."=>".$value."";//0=>coffee1=>tea2=>water}?>