php数组

来源:互联网 发布:linux串口读取gps数据 编辑:程序博客网 时间:2024/05/29 16:22

1          什么是数组

2          声明数组

2.1          array()函数声明

应用array()函数声明数组时,数组下边既可以是数值索引也可以是关联索引。下标与数组元素之间用“=>”连接,不同数组元素之间用逗号分割。

<?php

//数组的声明

$arr= array("asp","php","jsp");

print_r($arr);

echo $arr[1]."<br>";

?>

结果为:Array ( [0] => asp [1] => php [2] => jsp ) php

Array()函数声明数组比较灵活,可以再函数整体中只给出数值元素值,而不必给出键。



2.2          为数组赋值的方式声明

另一种比较灵活的数组声明方式是直接为数组元素赋值。

  <?php

//数组的声明

$arr= array("asp","php","jsp");

print_r($arr);

echo $arr[1]."<br>";

//数组的赋值

$arr[1] = "java";

print_r($arr);

echo $arr[1]."<br>";       

?>

输出结果为:Array ( [0] => asp [1] => php [2] => jsp ) php
Array ( [0] => asp [1] => java [2] => jsp ) java



3           数组的类型

3.1          数字索引数组

数字索引即是我们平常最常见到的数组形式—键-值对方式,下标必须是数字,而且从0开始

<?php

      $array[0]="P";

$array[1]="H";

$array[2]="P";

$array[3]="";

$array[4]="";

print_r($array);

echo $array[3];

echo "<br>";

?>

结果为:Array ( [0] => P [1] => H [2] => P [3] =>  [4] =>  ) 


3.2          关联数组

关联数组的键名可以是数值的字符串混合形式,而不行数字索引那样键名只能是数字,只要键名中有一个不是数字,那么这个数组就称为关联数组。

<?php

      $att = array("first"=>1,2=>2,"third"=>3);

print_r($att);

echo $att["first"]."<br>";?>

结果为:Array ( [first] => 1 [2] => 2 [third] => 3 ) 1

* 无论键名或是值名,只要不是数字就必须加但引号或是双引号,若是数字不加也可无误执行。


4           输出数组

PHP中对数组的输出可用:echo语句或print语句,使用者两种方式都只是对但一个元素输出,而通过print_r()函数可以将数组结构进行输出。


5           数组的构造

5.1          一维数组

5.2          二维数组

一个数组的元素如果是一个数组,则称这个数组为二维数组。

<?php

$str = array(

                          "水果"=>array(1=>"banana","second"=>"apple",3=>3),

                          "理科"=>array(0=>"化学",3=>"物理",7=>"生物",3=>"计算机"),

                          "文科"=>array("chinese"=>"语文","english"=>"英文","geography"=>"地理","geography"=>"历史")

                          );

print_r($str)."<br>";

echo $str["水果"][1]

?>

结果为:Array ( [水果] => Array ( [1] => banana [second] => apple [3] => 3 ) [理科] => Array ( [0] => 化学 [3] => 计算机 [7] => 生物 ) [文科] => Array ( [chinese] => 语文[english] => 英文[geography] => 历史 ) )

Banana

*  当给数组赋值时,赋值的键名数组中已存在了,则后者会覆盖前者。

按照同样的思路,可以创造更高维的数组,如三维数组。


6           遍历数组

6.1          使用foreach结构遍历数组

遍历数组最常见的方法是只用foreach结构,foreach结构并非操作数组本身,而是操作数组的一个备份。

<?php

$str = array(

                          "水果"=>"banana",

                          "理科"=>"化学",

                          "文科"=>"语文",

                          );

foreach($str as $link){

      echo $link."<br>";

      }

?>

结果为:banana
化学
语文

foreach结构实际操作的是$link变量。

Foreach结构一次性把数组所有的值输出,避免了使用echo输出语句一个一个输出,大大提高了工作效率。


6.2          使用list函数遍历数组

下面通过list函数结合each函数综合应用,获取数组中的键值对。

<?php

$str = array(

                          1=>"banana",

                          3=>"化学",

                          4=>"语文",

                          );

while(list($key,$value)=each($str)){

               echo "$key=$value"."<br>";

      }

?>

结果为:1=banana
3=
化学
4=

* :与foreach遍历数组的不同之处有:foreach输出的结果只有数组元素,而list()函数输出的结果有键值对。


7           合并数组

合并数组顾名思义是把一个数组追加到另一个数组中去,主要使用array_merge()函数来实现。array_merge()函数有个特点:相同的,且为字符串的键名,对应的元素会被后面的元素覆盖;相同的,且为数字的键名,对应的元素不会被后面的额元素覆盖,而是附加到后面!

<?php

$arr = array(1=>"first1","second"=>"er","third"=>"san");

$arr1 = array(1=>"second1","second" =>"second");

$rel = array_merge($arr,$arr1);

while(list($key,$value)=each($rel)){

         echo "$key = $value<br>";

         }

?>

结果为:0 = first1
second = second
third = san
1 = second1

* array_merge_recursive()函数的功能与array_merge()函数的功能相似,也是用来合并数组的,不同之处就是他会保留:相同的,且为字符串的键名,对应的元素,并把它附加都后面。


8           字符串与数组的转换

8.1          使用explode()函数将字符串转换成数组

explode()函数将字符串依指定的字符串或定界符separator切开,返回有字符串组成的数组。

<?php

$art = "php*asp*jsp*java*.net*android";

$str = explode("*",$art);

while(list($key,$value)=each($str)){

                   echo "$key = $value<br>";

                   }

?>

结果为:0 = php
1 = asp
2 = jsp
3 = java
4 = .net
5 = android

* :若定界符seperator为空,则explode()函数返回false;若定界符seperator所包含的字符在字符串中找不到,则explode()函数以整个字符串返回为一个数组。


8.2          是同implode()函数将数组转换成一个新的字符串

Implode()函数的功能无explode()函数的功能完全相反,但语法相似。

<?php

$str = array('php','jsp','asp','java','android','ios','.net');

$rel = implode(" ",$str);

 

echo $rel;

 

?>

结果为:php jsp asp java android ios .net


9           统计数组元素的个数

PHP中,使用count()函数对数组中的元素个数进行统计。

<?php

$str = array('php','jsp','asp','java','android','ios','.net');

$rel =count($str);

echo $rel;

 

?>

结果为:7

* count($array,COUNT_RECURSIVE)递归的对数组计数,对计算多维数组的所有单元尤其有用。


10       数组的排序

对数组进行排序可以简化编程,提高程序执行的效率

10.1       使用sort()函数对指定的数组进行升序排列

<?php

$str = array('php','jsp','asp','java','android','ios','.net');

//$str = array(1,3,5,7,0,33,55,77,22);

$str1 = sort($str);

for($i=0;$i<count($str);$i++){

      echo $str[$i]."&nbsp;&nbsp;&nbsp;";

      }

?>

结果为:.net   android   asp   ios   java   jsp   php   

*  sort()函数有两个参数,原型为:sort($array,sort_flag)

参数sort_flag的取值有三个,分别是:SORT_NUMBER(元素被作为数字来比较),SORT_REGULAR(按相应的ASCII码值排序),SORT_STRING(按正常顺序对元素排序).

10.2       使用rsort()函数对指定的数组进行降序排列

rsort()函数的功能与sort()函数的功能相反,参数用法相似。

10.3       关联数组排列

PHP除了提供升序降序的排序外,还提供了关联数组排序。关联数组排序可分为按键排序ksort()和按值排序asort()。参数的用法和升序排序一样!

assort()函数例:

<?php

$str = array(1=>"apple",3=>"pear",2=>"water");

$boo = asort($str);

foreach($str as $link){

      echo $link."&nbsp;&nbsp;&nbsp;";

      }

?>

结果为:apple pear water

Ksort()函数例:

<?php

$str = array(1=>"apple",3=>"pear",2=>"water");

$boo = ksort($str);

foreach($str as $link){

      echo $link."&nbsp;&nbsp;&nbsp;";

      }

?>