好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

php学习笔记 数组的声明与遍历 - php数组

php学习笔记 数组的声明与遍历

在php中数组是一个非常重要的数据存储类型,本文章主要是介绍了数据创建与数组删除及遍历查询数据值输出,下面一起来看看。

数组的声明

1、直接赋值的方式声明数组

$数组变量名[索引值] = 资料内容 //其中索引值(下标)可以是一个字符串或数字

但有的时候,我们也可以直接给数组赋值,并不填写[索引值],那第此时,数组的下标就会自动以数字0开始增加。

$数组变量名[] = 资料内容 //其中索引值(下标)可以是一个字符串或数字

2、使用array()语言结构新建数组

在实际使用中我们可以用array()语言结构来新建一个数组,并初始化数组。

$数组变量名=array( key1 => value1, key2 => value2, ...... ,keyN => valueN );

当然,像上面我们并不一定就这样,我们有的时候会像下面这样来做:(区别在于索引值为数字)

$数组变量名=array( value1, value2, ...... , valueN );

3、多维数组的声明

多维数组其实也就是在数组里面再次存放数组。如下:

$content  =  array  (  array (1, '高某' , 'A公司' , '北京市' ),  array (2, '高某1' , 'B公司' , '北京市' ),  array (3, '高某' , 'C公司' , '北京市' )  ); 

数组的遍历

1、使用for语句循环遍历数组

在其它的编程语言中,数组的遍历通常都是使用for循环语句,通过数组的下标来访问数组中每个成员元素,但要求数组的下标必须是连续的数字索引。而在PHP中,不仅可以指定非连续的数字索引值,而且还存在以字符为下标的关联数组。所以在PHP中,其实是很少使用for语句来遍历数组。下面来晒一个例子给大家看一下,大家应该不会陌生,实例代码如下:

<?php      //使用array()语句将联系人列表中第一条记录声明成一维数组$contact       $contact = array (1, "高某" , "A公司" , "北京市" , "(015)9582451" , "gao@php测试数据" );      //以表格的形式输出一维数组中的每个元素       echo   '<table border="1" width="600" align="center">' ;  //输出<table>标记定义表格       echo   '<caption><h1>联系人列表</h1></caption>' ;  //输出表头       echo   '<tr bgcolor="#dddddd">' ;  //输出表格的行开始,背景为灰色             //以html的th标记输出表格的字段名称       echo   '<th>编号</th><th>姓名</th><th>公司</th><th>地址</th><th>电话</th><th>EMAIL</th>' ;      echo   '</tr><tr>' ;      for ( $i =0; $i < count ( $contact ); $i ++){  //使用for循环来输出一维数组中的元素       echo   '<td>' . $contact [ $i ]. '</td>' ;     }      echo   '</tr></table>' ;  //输出表格的关闭标记      ?> 

遍历多维数组时,要使用循环嵌套逐层进遍历。在此就不用代码列出来了。

2、使用foreach语句遍历数组

既然for循环语句在PHP中并不常用,那么就让我们来看一下foreach到底有什么可取之处吧!

foreach语句有两种语法格式,第二种比较次要但却是第一种有用的扩展。

第一种语法格式:

foreach (array_expression  as   $value  ){     循环体     } 

第二种语法模式:

foreach (array_expression  as   $key  =>  $value ){             循环体             } 

3、联合使用list()、each()、和while()、循环遍历数组

each()函数

each()函数需要传递一个数组作为参数,返回数组中当前元素的键/值对,并向后移动数组指针到下一个元素的位置。键/值对被返回为带有四个元素的关联和索引混合的数组,键名分别为0、1、key和value。其中键名0和key对应的值是一样的,是数组元素的键名,1和value则包含有数组元素的值。如果内部指针越过了数组的末端,则each()返回FALSE。each()函数的使用如下所示,代码如下:

<?php       //声明一个数组$contact作为each()函数的参数        $contact = array ( "ID" =>1, "姓名" => "高某" , "http://HdhCmsTestphpfensi测试数据公司" => "A公司" , "地址" => "北京市" );              $id =each( $contact );  //返回数组$contact中第一个元素的键/值对,是带有4个元素的数组       print_r( $id );  //返回数组$id:Array([1]=>1[value]=>1[0]=>ID[key]=>ID)        $name =each( $contact );  //返回数组Rcontact中第二个元素的键/值对,是带有4个元素的数组       print_r( $name );  //返回数组$name:Array([1]=>高某 [value]=>高某 [0]=>姓名 [key]=>姓名)        $company =each( $contact );      print_r( $company );       $address =each( $contact );      print_r( $address );       $no =each( $contact );  //已经到数组$contact的末端,返回false       var_dump( $no );  //输出$no的值:bool(false)              ?> 

list()函数

这不是真正的函数,而是PHP的语言结构。list()用一步操作给一组变量进赋值,即把数组中的值赋给一些变量。list()仅能用于数字索引的数组并假定数字索引从0开始。语法格式如下所示:

list(mixed varname,mixed ...)=array_expression //list()语句的语法格式

list()语句和其它函数在使用上有很大的区别,并不是直接接收一个数组作为参数。而是通过[=]去处符以赋值的方式,将数组中每个元素的值,对应的赋给list()函数中的每个参数。list()函数又将它中的每个参数转换为直接可以在脚本中使用的变量。使用方法如下,实例代码如下:

<?php       $info = array ( 'coffee' , 'brown' , 'caffeine' );  //声明一个索引数组$info              list( $drink , $color , $power )= $info ;  //将数组中的所有元素转为变量        echo   "$drink is $color and $power makes it special.n" ; //输出的三个变量值是数组中三个元素的值              list( $drink , , $power )= $info ;  //将数组中的部分元素变为变量        echo   "$drink has $power.n" ;  //输出的两个变更值是数组中的前两个元素的值              list(,, $power )= $info ;  //跳过前两个变量只将数组中第三个元素的值转为变量        echo   "I need $power!n" ;  //输出的一个变量值是数组中桃花汛三个元素的值勤       ?> 

通过上例了解list()函数的用法之后,将each()函数和list()函数结合起来使用。代码如下:

<?php       $contact = array ( "ID" =>1, "姓名" => "http://HdhCmsTest111Cn.Net" , "公司" => "A公司" , "地址" => "北京市" );      list( $key , $value )=each( $contact );  //将each()函数和list()函数联合使用        echo   "$key=>$value" ;  //输出变量$key和$value,中间使用"=>"分隔   ?> 

while()循环遍历数组

while()循环的语法格式如下:

while ( list( $key , $value ) = each(array_expressin) ){  循环体;  } 

使用这种组合改写前面使用foreach遍历过的一维数组,代码如下所示:

<?php       //声明一个一维的关联数组$contact        $contact = array ( "ID" =>1,       "姓名" => "高某" ,       "公司" => "A公司" ,       "地址" => "北京市" ,       "电话" => "(010)987665432" ,       "EMAIL" => "gao@php测试数据"       );       //以HTML列表的方式输出数组中每个元素的信息        echo   '<dl>一个联系人信息:' ;       while (list( $key , $value ) = each( $contact ) ){  //将foreach语句改写成while,list()和each()的组合        echo   "<dd>$key:$value</dd>" ;  //输出每个元素的键/值勤       }       echo   '</dl>' ;  ?> 

4、数组内部指针控制函数遍历数组

对于数组指针的控制PHP提供了以下几个内部函数可以利用。

》》current():是取得目前指针位置的内容资料

》》key():用来读取目前指针所指向资料的索引值

》》next():将数组中的内部指针移动到下一个单无

》》prev():将数组的内部指针倒回一位

》》end():将数组的内部指针向最后一个元素

》》reset():将目前指针无条件移至第一个索引位置

这些函数的参数都只有一个,就是要操作的数组本身。在下面的示例中,将使用这些数组指针函数控制数组中元素的读取顺序,代码如下所示:

<?php       //声明一个一维的关联数组$contact,使用"=>"去处符指定了每个元素的字符串下标        $contact  =  array ( "ID" =>1,       "姓名" => "高某" ,       "公司" => "A公司" ,       "地址" => "北京市" ,       "电话" => "(010)98765432" ,       "EMAIL" => "gao@php测试数据"       );       //数组刚声明时,数组指针在数组中第一个元素位置        //使用key()和current()函数传入数组$contact,返回数组中当前元素的键和值        echo   '第一个元素:' .key( $contact ). '=>' .current( $contact ). '<br>' ;  //输出:第一个元素:ID=>1        echo   '第一个元素:' .key( $contact ). '=>' .current( $contact ). '<br>' ;  //数组指针没有移动,输出同上              next( $contact );  //将数组$contact中的指针向一个元素移动一次,指向第二个元素的位置       next( $contact );  //将数组$contact中的指针向一个元素移动一次,指向第三个元素的位置        echo   '第三个元素:' .key( $contact ). '=>' .current( $contact ). '<br>' ;  //输出第三个元素的键和值               end ( $contact );  //再将数组$contact中指针移动到最后,指向最后一个元素        echo   '最后一个元素:' .key( $contact ). '=>' .current( $contact ). '<br>' ;  //输出最后一个元素的键和值              prev( $contact );  //将数组$contact中的指针倒回一位,指向最后第二个元素        echo   '最后第二个元素:' .key( $contact ). '=>' .current( $contact ). '<br>' ;  //输出最后第二个元素的键和值              reset( $contact );  //再将数组$contact中的指针重置到第一个元素的位置,指向第一个元素        echo   '又回到了第一个元素' .key( $contact ). '=>' .current( $contact ). '<br>' ;  //输出第一个元素的键和值       ?> 

数据排序

•sort() 函数用于对数组单元从低到高进行排序。

•rsort() 函数用于对数组单元从高到低进行排序。

•asort() 函数用于对数组单元从低到高进行排序并保持索引关系。

•arsort() 函数用于对数组单元从高到低进行排序并保持索引关系。

•ksort() 函数用于对数组单元按照键名从低到高进行排序。

•krsort() 函数用于对数组单元按照键名从高到低进行排序。

例子代码如下:

<?php  $arr  =  array ( "b" ,  "a" ,  "c" );  sort( $arr );  print_r( $arr );  ?>  //运行该例子输出:   //Array ( [0] => a [1] => b [2] => c )  

在本例中, $arr 数组单元被按照字母顺序排序,而数组单元经过排序后,键值重新分配。

rsort()

PHP rsort() 函数行为与 sort() 相反,对数组单元进行由高到低排序,请参考 sort() 函数使用。

asort()

PHP asort() 函数用于对数组单元从低到高进行排序并保持索引关系,如果成功则返回 TRUE,失败则返回 FALSE。

语法: bool asort( array &array [, int sort_flags] )

可选参数 sort_flags 用以改变排序的行为,具体参见 sort()。

实例代码如下:

<?php  $arr  =  array ( "b" ,  "a" ,  "c" );  asort( $arr );  print_r( $arr );  ?>  //运行该例子输出:   //Array ( [1] => a [0] => b [2] => c )  

注:本文内容参考于《细说PHP》中的数组部分,仅作学习之余的个人笔记。

查看更多关于php学习笔记 数组的声明与遍历 - php数组的详细内容...

  阅读:45次