边记边学PHP-(十)PHP数组总结

数组简单的说就是一种存储数据的方式。这种方式特别重要,在以后会经常用到。废话不多说,我简单的总结了PHP数组。

1、数组的命名

         数组的命名规则同变量的命名规则一样,首先是$符号开头,名称第一个字符是英文字母或者下划线,不能使用数字或者特殊符号开头。数组名对大小写是敏感的。

2、数组的声明

         数组的声明是依靠声明函数来定义的。最常见的是array();但是手册上对它有这样的一句解释:array()  是一个语言结构,用于字面上表示数组,不是常规的函数。

         php数组其实是键值对($key=>$value)的组合,在php里面,有两种类型的数组,一种是索引数组,一种是关联数组。索引数组就是$key是数字,一个索引。关联数组就是$key是字符串,一个词对应一个值。那么

         使用array()是这样做的:

         $arr= array(这里面是对arr数组赋值,可以为空);

         这里对括号里面的参数说明几点:

         ①首先参数可以为空,代表我只是声明了这个数组,但是没有给数组赋值。那么我使用它的时候可以给它赋一维数组,也可以二维数组甚至更高维的数组。

②参数可以只写数组中存入的值$value,比如:$arr =array(“value1”,”value2”,”value3”);这样做默认就是索引数组,那么访问它或者说是使用里面的值的时候就应该是这么使用:$arr[0]……。

③可以显示的声明成索引数组,比如:$arr = array(1=>“value1”,2=>”value2”,3=>”value3”);访问里面的值的时候同上。

④可以声明成关联数组,比如:$arr =array(“key1”=>“value1”, “key2”=>”value2”, “key3”=>”value3”);那么访问的时候就应该是这样的:$arr[‘key1’]……

对于一个数组,可以使用这个php语句来看他的详细结构:echoprint_r($arr);或者var_dump($arr);

 

这里我在说明一下:php在显示声明索引数组时索引是可以不用挨着的,也就是不一定12345……这样,可以是12579。

参数之间用逗号隔开,最后一个参数后面可以加逗号,也可以不加。一般不加。加上也不算错。

 

另外我今天写这篇之前,看了一下书,发现书上还有几种声明数组的函数,然后我就看了一下他们的用法,这里跟大家分享。

(1)array  array_combine ( array $keys  , array$values  )

这个函数也是返回一个数组,不过他的参数却是两个数组类型的参数。这个函数是这个意思,我举一个例子:

<?php

$a  = array( 'green' ,  'red' , 'yellow' );

 $b  =array( 'avocado' ,  'apple' ,  'banana' );

 $c =  array_combine ( $a ,  $b );

 

 print_r ( $c );

 ?>

那么这个会输出:

Array

(

    [green] => avocado

    [red]   => apple

    [yellow] => banana

)

也就是说第一个函数里面的值作为了返回数组的键$key,第二个函数的值作为了返回数组的值$value。那么访问返回数组的时候就应该是$array[‘key’]……

(2)array  array_fill ( int $start_index  , int$num  , mixed  $value )

这个函数名里面带了一个fill,也就是填充的意思,那么也就好理解了。里面三个参数,第一个参数是返回数组的键,Int型说明这是一个索引数组,start说明开始的数字,如果是正数就递增+1,如果是负数那么第一索引是指定的负数,之后是从0开始。第二个参数是要填充值的数量,最后一个就是要填充的值了。那么会发现,其实整个数组里面的值是相同的,但是索引不同。比如:

 

<?php

$a  = array_fill ( 5 ,  6 ,  'banana' );

 $b =  array_fill (- 2 ,  4 , 'pear' );

 print_r ( $a );

 print_r ( $b );

 ?> 

以上例程会输出:

Array

(

    [5] => banana

    [6] => banana

    [7] => banana

    [8] => banana

    [9] => banana

    [10] => banana

)

Array

(

    [-2] => pear

    [0] => pear

    [1] => pear

    [2] => pear

)

(3)arrayarray_pad  ( array $input  , int $pad_size  , mixed $pad_value  )

这个又是一个用数组做参数的,好烦。这个的意思就是用pad_value的值去填充input,不过这个input里面可能有值,那么这个函数是不会清空他的,如果pad_size大于input的长度,那么就会在它后面填充,返回数组的长度为pad_size。如果小于input的长度,就不会填充。如果是pad_size是负数,那么就要看他的绝对值。如果绝对值大于input的长度,就会往左添加。小于则不做修改。比如:

<?php

$input  = array( 12 , 10 ,  9 );

 

 $result =  array_pad ( $input ,  5 ,  0);

 // result is array(12, 10, 9, 0, 0)

 

 $result =  array_pad ( $input , - 7 , - 1);

 // result is array(-1, -1, -1, -1, 12, 10, 9)

 

 $result =  array_pad ( $input ,  2 , "noop" );

 // not padded

 ?>

(4)arraycompact  ( mixed  $varname [, mixed  $...  ] )

这个其实有点难理解,我直接举例子吧:

<?php

$city   = "San Francisco" ;

$state  = "CA" ;

$event  = "SIGGRAPH" ;

$location_vars  = array( "city" ,  "state" );

$result  = compact ( "event" , "nothing_here" , $location_vars );

print_r ($result );

 ?>  

以上例程会输出:

Array

(

    [event] => SIGGRAPH

    [city] => San Francisco

    [state] => CA

)

我解释一下是怎么来的,首先我声明了三个变量,$city   =  "San Francisco" ;$state  = "CA" ;$event  =  "SIGGRAPH" ;还有一个数组$location_vars  = array( "city" ,  "state" );其实现在变量名就是调用这个函数返回数组的键了,而变量的值就是数组的值。而这个数组里面的值就也是相当于返回数组的键。所以当我们$result  =  compact ( "event" ,  "nothing_here" ,  $location_vars );使用这句话去返回一个数组的时候,他就会去查找是不是有变量叫event,他找到了,那么他就有对应的值SIGGRAPH,他又去找nothing_here发现没有定义这个变量,那么数组中也不会存储他。之后他把数组传进去,那么他就会挨着找数组的值是不是有变量名与他对应,如果有对应,那么他就会存储,否则就略过。所以看到了这个结果。

 

但是这四种我都没用过,第一种array()是一定要会的。

 

除了用数组声明函数来声明函数之外,PHP还有一种声明方式就是$arr[]=某值。比如

$arr[0]=’value1’;

$arr[1]=’value2’;

……

这样也可以声明一个数组。

 

3、遍历数组

         遍历数组使用循环语句。可以看一下循环语句是怎么回事。

         最常见的有foreach($arras $key=>$value)、for($i = 0;$i<count($arr);$i++)、while($arr[$i++])等。遍历可以有遍历一维数组或者多维数组。我这里举例:

         首先我有这么一个数组:

         $array= array(“西游记”=>”吴承恩”,”红楼梦”=>”曹雪芹”,”水浒传”=>”施耐庵”,”三国演义”=>”罗贯中”);

         我可以这么遍历:

         foreach($arrayas $key=>$val){

         echo $key.”=>”.$val;//这里你可以只打印$val,我这里是把结构打印出来了。

}

$array = array(“西游记”,”红楼梦”,”水浒传”,”三国演义”);

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

         echo $array($i);

}

$i=0;

while($array[$i++]){

         echo $array[$i];

}

三种遍历方法,看情况使用。如果是关联数组,一般用foreach()来遍历。

4、常用的数组函数

        

函数

作用

array explode ( string $delimiter, string $string  [, int $limit] )

此函数返回由字符串组成的数组,每个元素都是 string 的一个子串,它们被字符串 delimiter 作为边界点分割出来。

string implode ( string $glue  , array $pieces )

string implode  ( array $pieces)

用 glue 将一维数组的值连接为一个字符串。

bool sort ( array &$array  [, int $sort_flags  = SORT_REGULAR ] )

本函数对数组进行排序。当本函数结束时数组单元将被从最低到最高重新安排。

bool rsort ( array &$array  [, int $sort_flags  = SORT_REGULAR] )

本函数对数组进行逆向排序(最高到最低)。

bool in_array ( mixed $needle , array $haystack  [, bool $strict= FALSE] )

在 haystack 中搜索 needle,如果没有设置 strict 则使用宽松的比较。如果找到 needle 则返回 TRUE ,否则返回 FALSE 。

int array_push( array &$array , mixed $var [, mixed $...] )

array_push()  将 array 当成一个栈,并将传入的变量压入 array 的末尾。array 的长度将根据入栈变量的数目增加。和如下效果相同: <?php  $array [] =  $var ;?>  

并对每个 var 重复以上动作。

 

这些函数的具体用法参考手册。

5、数组的赋值

数组的赋值与变量差不多,只是是对每一个元素进行赋值,特别说明的一点就是:

可以这么通过循环语句赋值:

while(你的条件){

         $arr[]= 某个值;

}

这样他会从$arr[0]开始依次赋值,生成一个索引数组。

 

数组大概我能总结的就这么多了。这几天我自己也在学习新的知识,常常忘了一些事,所以就更新的比较懒。

 

下一篇开始看php是如何面向对象的。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值