现在的位置: 首页 > 综合 > 正文

PHP学习笔记三:PHP数组学习小结

2013年12月25日 ⁄ 综合 ⁄ 共 2204字 ⁄ 字号 评论关闭

PHP数组不同于其它语言的一个特点就是它支持数字索引数组和关联数组。对于索引数组的话凡是学过C的人都知道,那么PHP关联数组是怎么一回事呢,好,接下来就聊聊看!

PHP定义数组的方法:

$phpary = array( '12','ab',array( 'cc','22' ) );

这种定义方式就是PHP定义数组的方法,它同时还给数组赋了值。当然你也可以定义一个空数组然后再去赋值也可以,PHP还有一种定义数组的方式,如下:

$ary[] = 'abc';
$ary[] = '123';
print_r( $ary );

这种方式就是你可以不用声明数组,直接以这种方式赋值,然后哪个变量其实就已经是一个数组了。

另外从中可以看到,PHP语言属于弱类型语言,即数组中的元素并不是必须是同一类型数据而是可以使任意类型的数据,这点也是PHP数组的一个特点。

上面介绍的PHP数组都是索引数组,就是当你打印出数组看的时候会发现他们的键值都是数字,而且从0开始递增。

那么接下来就看一个关联数组:

$ary1 = array( 'name'=>'beyond','sex'=>'m','age'=>20 );

关联数组的定义方式就如上面一样,当你打印出上面的数组看的时候就会发现它们的键值都是“=>”左边的值,而数组的值就是“=>”右边的值。

当然如果你看到了文章那么你可以想象一下当PHP数组中既有关联的定义方式又有索引方式那打印出的数组会是怎么样呢?请测试下。。。。。

定义呢就这么多了,没什么可说的,当你学习PHP的时候相信你已经对上面的东西很了解了。

但是下面还得说一些关于如何输出PHP数组的方法和一些常用的PHP数组的操作函数(PHP核心库中的一些函数)。

如何输出一个数组呢?当你知道这个数组的长度的时候可以通过for循环来输出,那么这里就需要一个求PHP数组长度的函数,常用的就是count()函数,但是这种仅仅限于你将要输出的数组为索引数组,当数组中包含关联项的时候这种方式就不适应了,于是PHP就提供了foreach(){}来循环的输出数组,这里就不写代码了,想测试的自己写代码测试吧,没难度。

这里我们要记录的另外一种输出数组的方式,虽然它不常见,但是却很有用,代码如下:

$ary1 = array( 'name'=>'beyond','sex'=>'m','age'=>20 );
while( ( list( $k,$v ) = each( $ary1 ) ) != FALSE ){
	echo '<br/>' . $k . '=>' . $v;
}

这种用each()和list()搭配的方式来输出数组在需要的时候也是一种很好的方法,但是这里需要注意的是,对于list()函数而言它只能用于索引数组,这两个函数具体的执行过程如下:

首先each()函数从$ary1数组中取出第一个元素,并且将这个元素的键和值分别当做一个元素存放于一个新的数组中返回给list( $k,$v ),然后当list()函数接受到这个临时数组的时候就判断这个数组是不是一个索引数组,如果不是的话就会报错退出,如果是的话那就将这个数组的值按顺序分别赋值给$k,$v....,这后面的省略号说明当临时数组中有几个元素的时候这里的参数就是几个,我们现在临时数组中有两个元素那么list()中只需要两个参数,然后接下来分别输出就是了。

对于这个过程还请大家好好琢磨一番,因为好的理解对于你后来的运用有很好的帮助。

这里有一些常用的PHP函数,不一一详解,如果你还不知道的话请查看手册吧。

排序函数:sort()

多维数组排序函数:usort()

对每个数组的元素应用任何函数:array_walk()

统计数组中各个元素出现的频率:array_count_values()

等等一些函数像array_push()、array_pop()、array_shift()、array_unshift()等,这里就不再记录,下面就讲一个很好用的函数吧:array_merge()

$array1 = array("color" => "red", 2, 4);
$array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4);
$result = array_merge($array1, $array2);
print_r( $result );

然后它的官方解释如下:

array_merge() 将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。

如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。

如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。

这里说下上面画下划线的那句,其实你大可不必去考虑,因为从这个函数的原型可以看出

array array_merge (
array $array1 [,
array $array2 [,
array $... ]] )

它所要求的参数其实只有一个,当你传一个数组给它的时候那么如果你这个数组是索引的那么它会帮你重新存一遍再返回给你就是说索引一定是从0开始递增的,如果你里面含有关联项,那么它不做任何事直接返回给你。

这里必须明确一点就是在PHP5.3之后这个参数必须是数组

然后对于多维数组的话跟上面的一样,请大家自己去测试吧!

好,今天就到这儿~\(≧▽≦)/~啦啦啦

抱歉!评论已关闭.