Go homepage(回首页) Upload pictures (上传图片) Write articles (发文字帖)
The author:(作者)归海一刀published in(发表于) 2014/2/17 7:42:06 入门知识:动态网页PHP编程中数组的基础知识_[PHP教程]
关于数组:
PHP中的数组是复杂的,并且比许多其他高级语言中的数组更灵活。数组array是一组有序的变量,其中每个变量被叫做一个元素。数组可以被编号或者相关联,也就是数组的元素可以分别根据数字索引或文本化字符串来访问PHP中,数组可以包含标量(整数,布尔,字符串,浮点数)或复合值(对象甚至其他数组),并且可以包含不同类型的值
1。创建数组
PHP提供创建数组的array()语言结构numbers = array(5,4,3,2,1);words = array("web","database","application");echo numbers[2];echo words[0];---------------------输出结果----------------------------------------3web---------------------------------------------------------------------默认情况下,数组的第一个元素的索引为0。数组中包含的值可以通过使用方括号[]语法来检索和修改numbers[5] = 0;数字化索引的数组可以创建位从任何索引值开始numbers = array(1=>"one","two","three","four");也可以松散的索引numbers = array(1=>"one",3=>"three",5=>"zero");可以通过给变量赋予一个没有参数的array()来创建空数组。然后可以通过使用方括号[]语法来添加值error = array();error[] = "no error!!!";error[] = "second error!!!";echo error[0];echo error[1];---------------------输出结果----------------------------------------no error!!!second error!!!---------------------------------------------------------------------
2.关联数组
关联数组(associative array)使用字符串索引(或键)来访问存储在数组中的值关联索引的数组对于数据库层交互非常有用newarray = array("first"=>1,"second"=>2,"third"=>3);echo newarray["second"];newarray["third"]=5;echo newarray["third"];---------------------输出结果----------------------------------------25---------------------------------------------------------------------
3.异构数组
PHP数组可以包含不同种类的值mixedBag = array("cat",42,8.5,false);var_dump(mixedBag);
4.多维数组
创建包含数组的数组,数组维数没有限制,但是一般很难想象一个多于三维的数组的用法planets = array(array("MM",1,2),array("NN",3,4),array("BB",5,6),array("VV",7,8));print planets[2][0];planets2 = array("MM"=>array("AA"=>1,"SS"=>2),"NN"=>array("DD"=>3,"FF"=>4),"BB"=>array("GG"=>6,"HH"=>7,"PP"=>array("haha!!!!")),"VV"=>array("JJ"=>6,"KK"=>7,"LL"=>array("one","two")));print planets2["VV"]["LL"][0];---------------------输出结果----------------------------------------BBone---------------------------------------------------------------------
5.使用循环访问数组
遍历数组的方法有很多(使用while,for循环)或者foreach语句,最容易的是foreach 语句length = array(0,107,202,400,475);//将厘米转换为寸for(i=0;i<5;i++){echo (length[i]/3);}j=0;while(isset(length[j])){echo (length[j]/3);j++;}foreach(length as cm){echo (cm/3);}---------------------输出结果----------------------------------------035.666666666767.3333333333133.333333333158.333333333035.666666666767.3333333333133.333333333158.333333333035.666666666767.3333333333133.333333333158.333333333
---------------------------------------------------------------------foreach还可以迭代关联数组的值sound = array("cow"=>"moo","dog"=>"woof","pig"=>"oink","duck"=>"quack");foreach (sound as animal=>noice){echo "animal 得叫声是这样的 noice noice......";}---------------------输出结果----------------------------------------cow 的叫声是这样的 moo moo......dog 的叫声是这样的 woof woof......pig 的叫声是这样的 oink oink......duck 的叫声是这样的 quack quack......
---------------------------------------------------------------------
6.使用数组指针
与存储在数组中的键和关联值一起,PHP还拥有一个指向数组当前元素的内部索引,有几个函数使用并更新该数组索引来提供对数组元素的访问a = array("a","b","c","d","e","f");echo current(a);each(a);key(a);//目前数组的指针,返回其索引echo current(a);//当前元素的值each(a);//返回当前元素的值并将内部索引指向下一个元素each(a);echo current(a);next(a);//指向下一个元素echo current(a);prev(a);//指向上一个元素echo current(a);end(a);//指向最后一个元素echo current(a);key(a);echo current(a);---------------------输出结果----------------------------------------abdedff---------------------------------------------------------------------
7.基本的数组函数
integer count(mixed var)//在数组中返回元素的个数,也可用于任何的变量number max(array numbers)//返回数组中的最大值number min(array numbers)//返回数组中的最小值boolean in_array(mixed needle,array haystack[,bollean strict])//查找数组中的值,第三个参数可选,强制执行类型检查mixed array_search(mixed needle,array haystack[,boolean strict])//返回 键 而不是布尔值,找不到时返回false,找到的元素如果正好是第一个元素,则返回0,而PHP会自动转化为false所以需要使用===判断,如下a = array("a","b","c","d","e","f");index = array_search("a",a);if(index === false)echo "在数组a中未发现字符'a'";elseecho "Index = index";---------------------输出结果----------------------------------------Index = 0---------------------------------------------------------------------array array_reverse(array source[,bool preserve_keys])//逆转数组,生成一个新数组,可选参数为true时,保留索引和元素之间的关联a = array("a","b","c","d","e","f");newa = array_reverse(a);//直接翻转echo newa[0];newb = array_reverse(a,true);//依旧保留了索引和元素之间的关联echo newb[0];---------------------输出结果----------------------------------------fa---------------------------------------------------------------------sort(array subject[,integer sort_flag])//根据 值 进行升序排列(在原数组中重新排列元素)rsort(array subject[,integer sort_flag])//根据 值 进行降序排列(在原数组中重新排列元素)可选参数可以指定为按数字方式SORT_NUMERIC还是字符串方式SORT_STRING或者通常的方式SORT_REGULAR排序sort()、rsort()可以用于关联数组,但是 键 将丢失asort(array subject[,integer sort_flag])//根据 值 进行升序排列(在原数组中重新排列元素),保持键值关联arsort(array subject[,integer sort_flag])//根据 值 进行降序排列(在原数组中重新排列元素),保持键值关联当asort() arsort()用于非关联数组时,元素按排序后的次序重新排列,但是访问元素的索引不改变integer ksort(ayyay subject [,integer sort_flag])//根据 键或索引 进行升序排列integer krsort(ayyay subject [,integer sort_flag])//根据 键或索引 进行降序排列usort(array subject, string compare_function)//根据用户定义排序,用户定义自己的排序规则函数,但函数必须符合uasort(array subject, string compare_function)//integer my_compare_function(mixed a, mixed b),a>b返回1,a uksort(array subject, string compare_function)//a等于b时返回0numbers = array(16,3,2,171,5,24,6,19);sort(numbers);foreach(numbers as n)echo n." ";numbers = array(16,3,2,171,5,24,6,19);rsort(numbers);foreach(numbers as n)echo n." ";numbers = array(16,3,2,171,5,24,6,19);sort(numbers,SORT_STRING);foreach(numbers as n)echo n." ";
a = array("o"=>"kk","e"=>"zz","z"=>"hh","a"=>"rr");asort(a);foreach (a as keyname=>keyvalue)echo keyvalue;
a = array("o"=>"kk","e"=>"zz","z"=>"hh","a"=>"rr");ksort(a);foreach (a as keyname=>keyvalue)echo keyvalue;
//基于长度比较两个字符串function cmp_length(a,b){if(strlen(a) < strlen(b))return -1;if(strlen(a) > strlen(b))return 1;return 0;}animals = array("cow","ox","monkey","mimi");usort(animals,"cmp_length");foreach(animals as an)echo an;---------------------输出结果----------------------------------------2 3 5 6 16 19 24 171 171 24 19 16 6 5 3 2 16 171 19 2 24 3 5 6 hhkkrrzzrrzzkkhhoxcowmimimonkey---------------------------------------------------------------------array_merge(a,b)//组合数组,个人认为是比较有趣的函数之一,从两个数组生成一个数组,具有相同 键 的值会被覆盖////////////////////////////代码部分////////////////////////////////////////a = array("name"=>"zhangsan",10,100);b = array("name"=>"lisi",4,6,8);c = array_merge(a,b);var_dump(c);//////////////////////////////////////////////////////////////////////////---------------------输出结果----------------------------------------array(6) { ["name"]=> string(4) "lisi" [0]=> int(10) [1]=> int(100) [2]=> int(4) [3]=> int(6) [4]=> int(8) } ---------------------------------------------------------------------array array_combine(array a,array b)//a数组的值为新数组的键,b数组的值为新数组的值,数组长度不同时,返回false////////////////////////////代码部分////////////////////////////////////////a = array("name","math","china");b = array("zhangsan",4,6);c = array_combine(a,b);var_dump(c);//////////////////////////////////////////////////////////////////////////---------------------输出结果----------------------------------------array(3) { ["name"]=> string(8) "zhangsan" ["math"]=> int(4) ["china"]=> int(6) } ---------------------------------------------------------------------
赞