数组数组基础 含义:数组就是一系类数据的集合体,他们按设定的顺序排列为一个“链的形状”。 注意:php中的数组单元的顺序,跟下标无关。 数组定义(赋值):$arr1=array(3, 11, 5, 6);这是最常见的数组,下标为默认下标,就是从0开始的整数。 $arr2=array(“a”=>3,“b2”=>44,“c123”=>14,“d1”=>23,“x5”=>18);关联数组,下标为字符串 $arr3=array(1=>3,10=>44,3=>14,3=>23,5=>18);下标可以人为给定; $arr4=array(1=>3,“a1”=>44,3=>14,3=>23,“mn”=>18);下标可以为数字和字符串混合使用 $arr5=array(1=>3, 44, 5=>14,“mn”=>18,3=>23); //有指定下标,也有自动下标, //此时下标为:1,2,5,“mn”,3 //可见自动下标为前面最大数字下标+1 $arr6=array(1=>3, 7.7=>23, 5=>14,“mn”=>18,3=>23);//此时下标为1,7,5,“mn”,3 $arr7=array(2=>3, 44, true=>14,false=>18,5=>23);//此时下标为2,3,1,0,5 $arr8=array(1=>3, 5=>14, true=>11); //此时下标为1,5 对应值为3,14 //下标如果有重复,后面的值覆盖前面的值 $arr9=array(1=>3, -5=>14,3=>23,); //此时下标为1,-5,3 后面的逗号可以有 其他形式: $arr10[]=3; $arr10[]=11; $arr10[]=5; //该数组下标为0,1,2 常规情况 $arr11[‘a’]=3; $arr11[‘bb’]=11; $arr11[‘c123’]=5; //该数组下标为 ‘a’, ‘bb’, ‘c123’ $arr12[1]=3; $arr12[]=11; //此时下标为2 $arr13[‘cc123’]=3; //该数组的下标为1,2,cc123 注意:php中,数组单元的顺序,是由其”放入“顺序决定,而不是下标 数组取值:$v1=$arr1[0]; $i=3; $v2=$arr1[$i]; //取的数组下标为3的单元的值; 总体上,可以将取的一个数组的单元的值,看组取得一个变量的值完全一样 数组的分类按键值关系来分:素引数组:通常认为,如果一个数组的下标是严格按照从0开始的连续的整数作为下标,则称其为索引数组——就是类似js数组的下标。例如: $arr1=array(3, 11 ,5, 18, 2);//这是最常见的数组,下标为”默认下标“,就是从0开始的整数 关联数组:通常认为,如果一个数组的下标都是一个“字符串”并一定程度上表明了该单元的含义,则称为关联数组,例如: $conf=array( ‘host’=>”localhost”; ‘port’=>3306; ‘username’=>”root”; ‘password’=>’123’; ); 混合数组:既有数字下标,又有字符下标的情况: $arr4=array(1=>3, ‘a1’=>11, 3=>5, ‘mn’=>18, 88=>2); //下标可以数组和字符串混合使用; 按叔祖的维数(复杂程度)分:一维数组: $a=array(1,11,111); $b=array(2,22,222); $c=array(3,33,333); 二维数组: 多维数组 数组的基本使用求一个数组的平均值:$a=array(1,11,111,1111); $len=count($a); //数组的长度 $sum=0; //用于总和 $c=0; //用于存储数组的个数 For ($i=0;$i<$len;++$i){ $sum+=$a[$i]; ++$c; } Echo “<br />平均值为:” . ($sum/$c); 求一个二维数组的平均值:$dd=array{ array(1,11,111), array(2,22,222), array(3,33,333) }; $len=count($dd); $sum=0; //用于总和 $c=0; //用于存储数组的个数 For($i=0;$i<$len;++$i){ $temp=$dd[$i]; $len2=count($temp); For($k=0;$k<$len2;++$k){ $sum+=$temp[$k]; ++$c; } } Echo “<br /> 平均值为:” . ($sum/$c); 求一个一维数组的最大值:$arr3=array(13, 5, 8, 15, 11, 22); $max=$arr[0]; $pos=0; $len=count($arr3); for($i=0;$i<$len;++$i){ If($arr3[$i]>$max){ $max=$arr3[$i]; $pos=$i; } } 求交换一个一维数组的最大值和最小值的位置:$arr3=array(13, 5, 8, 15, 11, 22); Echo “<br />交换之前:”; print_r($arr3); $max=$arr[0]; $pos=0; $min=$arr3[0]; $pos2=0; $len=count($arr3); for($i=0;$i<$len;++$i){ If($arr3[$i]>$max){ $max=$arr3[$i]; $pos=$i; } If($arr3[$i]<$min){ $mmin=$arr3[$i]; $pos2=$i; } } Echo “<br />最大值为:” . ($max) .”,其下标为$pos”; Echo “<br />最小值为:” . ($min) .”,其下标为$pos2”; //然后开始交换 $t=$arr3[$pos]; $arr3[$pos]=$arr3[$pos2]; $arr3[$pos2]=$t; Echo “<br />交换之后:” print_r($arr3); file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps9C31.tmp.jpg file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps9C32.tmp.jpg 数组的基本遍历foreach 基本语法 foreach ($数组变量名 as 【$key=>】 $value){ //循环体; 这里可以去”使用“$key和$value; //$key和$value就是该遍历语句一次次取得的数组的每一个单元(项)的下标和对应值。 //而且,它总是从叔祖的开头往后按顺序取数据。 } file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps9C42.tmp.jpg file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps9C43.tmp.jpg
|