关于数组: 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); } ---------------------输出结果---------------------------------------- 0 35.6666666667 67.3333333333 133.333333333 158.333333333 0 35.6666666667 67.3333333333 133.333333333 158.333333333 0 35.6666666667 67.3333333333 133.333333333 158.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'"; else echo "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时返回0 $numbers = 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); (责任编辑:admin) |