您的当前位置:首页正文

php数组操作

来源:九壹网


第三章 数组

一、 什么是数组

数组就是一组数据的集合,把一系列数据组织起来,形成一个可操作的整体。数组的每个实体都包含两项:键和值。

二、 声明数组

在PHP中声明数组的方式主要有两种: 一是应用array()函数声明数组, 一是直接为数组元素赋值。

<1> array() 函数用来新建一个数组。它接受一定数量用逗号分隔的 key => value 参数对。array( [key =>] value, ...) // key 可以是 数字 或者 字符串 // value 可以是任何值

如, $array=array(\"1\"=>\"编\程\词\典\"); ?>

<2>直接为数组元素赋值。

如果在创建数组时不知所创建数组的大小,或在实际编写程序时数组的大小可能发生变化,采用这种数组创建的方法较好。 如, $array[1]=\"I\"; $array[2]=\"love\"; $array[3]=\"PHP\";

//print_r($array); //输出所创建数组的结构 ?>

三、数组的类型

PHP支持两种数组:索引数组(indexed array)和联合数组(associative array),前者使用数字作为键,后者使用字符串作为键。 四、输出数组

1.在PHP中对数组元素输出,可以通过echo语句来实现,但这只能对数组中某一元素进行输出;要将数组结构输出则要使用print_r()函数,

其语法:print_r(mixed expression),参数expression为普通的整型、字符型或实型。变量则输出该变量本身,如果该参数为数组,则按一定键值和元素的顺序显示出该数组中的所有元素。

2.用 foreach 循环显示数组元素: $phpjc = array( 'word', 'excel', 'outlook', 'access' );

foreach($phpjc as $software) {

echo $software; echo \"
\"; echo \"
\"; }

foreach($phpjc as $key=>$value) {

echo $key.\": \".$value; echo \"
\"; echo \"
\"; } ?>

用print_r() 函数输出数组:

$phpjc = array( 'word', 'excel', 'outlook', 'access' );

print_r($phpjc); ?> 输出:

[0] => word [1] => excel [2] => outlook [3] => access )

?>

五、二维数组:

当一个数组的元素是一个一位数组时,则称之为二维数组。 如, \"网络编程语言\"=>array (\"PHP\ \"体育项目\"=>array (\"m\"=>\"足球\篮球\")); print_r ( $str) ; ?>

六、数组中函数的应用

1.count() 函数计算数组元素的个数

在PHP中,使用count()函数对数组中的元素个数进行统计,语法为:int coun(mixed array[,int mode]),其中参数array为必要参数,mode为可选参数,

若选中COUNT——RECURSIVE(或1),本函数将递归地对数组数组。如, $array = array(\"php\" => array(\"PHP函数参考大全\程序开发范例宝典\数据库系统开发完全手册\"),

\"asp\" => array(\"ASP经验技巧宝典\") ); //声明一个二维数组

echo count($array,COUNT_RECURSIVE);//递归统计数组元素的个数,运行结果为6 ?>

2.分割数组 array_chunk()

定义和用法

array_chunk() 函数把一个数组分割为新的数组块。

其中每个数组的单元数目由 size 参数决定。最后一个数组的单元数目可能会少几个。

可选参数 preserve_key 是一个布尔值,它指定新数组的元素是否有和原数组相同的键(用于关联数组),还是从 0 开始的新数字键(用于索引数组)。默认是分配新的键。

语法

array_chunk(array,size,preserve_key)

参数 array size 描述 必需。规定要使用的数组。 必需。规定每个新数组包含多少个元素。 可选。可能的值: Preserve_key true - 保留原始数组中的键名。 false - 默认。每个结果数组使用从零开始的新数组索引。 例子:

$input_array = array('a', 'b', 'c', 'd', 'e');

print_r(array_chunk($input_array, 2));

print_r(array_chunk($input_array, 2, TRUE));?> 3.合并数组 array_merge()

定义和用法

array_merge() 函数把两个或多个数组合并为一个数组。

如果键名有重复,该键的键值为最后一个键名对应的值(后面的覆盖前面的)。如果数组是数字索引的,则键名会以连续方式重新索引。

注释:如果仅仅向 array_merge() 函数输入了一个数组,且键名是整数,则该函数将返回带有整数键名的新数组,其键名以 0 开始进行重新索引。(参见例子 2)

语法

array_merge(array1,array2,array3...) 参数 array1 array2 array3 例子1

$a1=array(\"a\"=>\"Horse\

$a2=array(\"c\"=>\"Cow\

print_r(array_merge($a1,$a2)); ?> 输出:

描述 必需。输入的第一个数组。 必需。输入的第二个数组。 可选。可指定的多个输入数组。

Array ( [a] => Horse [b] => Cat [c] => Cow ) 例子 2

仅使用一个数组参数:

$a=array(3=>\"Horse\print_r(array_merge($a)); ?> 输出:

Array ( [0] => Horse [1] => Dog )

4.数组位置函数 prev()

定义和用法

prev() 函数把指向当前元素的指针移动到上一个元素的位置,并返回当前元素的值。

如果内部指针已经超过数组的第一个元素之前,函数返回 false。 语法 prev(array) 参数 array 描述 必需。规定要使用的数组。 $planet = array( '123', '456', '789', );

$pos = current($planet); //此时$pos=123 指向第一个元素 echo 'pos1='.$pos; echo '
';

$pos = prev($planet); //此时$pos=空 因为指针已指到第一个元素之前了,没元素了

echo 'pos2='.$pos; echo '
'; ?>

输出: pos1=123

pos2=

5.数组位置函数 next()

定义和用法

next() 函数把指向当前元素的指针移动到下一个元素的位置,并返回当前元素的值。

如果内部指针已经超过数组的最后一个元素,函数返回 false。 语法 next(array) 参数 array 描述 必需。规定要使用的数组。 $arrtest = array( 'abc', 'def', 'mnk' ); $arr = current($arrtest); //此时$arr=abc 当前数组元素指向第一个元素

echo 'arr='.$arr; //输出第一个元素的内容 echo '
'; //换行 echo '
';

$arr2 = next($arrtest); //此时$arr=def 用了 next语句后,指针指向下一个元素,所以返回第二个元素的值

echo 'arr2='.$arr2; //输出 arr2 变量的值 echo '
'; //换行 echo '
'; ?>

数组的排序 6.sort() 排序函数

定义和用法

sort() 函数按升序对给定数组的值排序。

注释:本函数为数组中的单元赋予新的键名。原有的键名将被删除。 如果成功则返回 TRUE,否则返回 FALSE。 语法

sort(array,sorttype)

参数 array 必需。输入的数组。 可选。规定如何排列数组的值。可能的值: SORT_REGULAR - 默认。以它们原来的类型进行处理(不改变类型)。  SORT_NUMERIC - 把值作为数字来处理  SORT_STRING - 把值作为字符串来处理  SORT_LOCALE_STRING - 把值作为字符串来处理,基于本地设置*。  描述 sorttype $arr_sort = array( 'php', 'java', 'c++', 'asp', 'jsp'

);

sort($arr_sort); //对数组排序 输出:

arr_sort[0]=asp arr_sort[1]=c++ arr_sort[2]=java arr_sort[3]=jsp arr_sort[4]=php

7.rsort() 排序函数 定义和用法

rsort() 函数对数组的元素按照键值进行逆向排序。 用法和可参照sort()函数 语法

rsort(array,sorttype)

asort() 排序函数

asort() 函数对数组进行排序并保持索引关系。主要用于对那些单元顺序很重要的结合数组进行排序。

ksort() 排序函数

ksort() 函数按照键名对数组排序,为数组值保留原来的键。 shuffle() 随机排序函数

shuffle() 函数把数组中的元素按随机顺序重新排列。 shuffle(array)

array_reverse() 排序函数 定义和用法

array_reverse() 函数将原数组中的元素顺序翻转,创建新的数组并返回。如果第二个参数指定为 true,则元素的键名保持不变,否则键名将丢失。

语法

array_reverse(array,preserve)

参数 array 必需。规定数组。 可选。规定是否保留原始数组的键名。可能的值:true 和 false。 这个参数是 PHP 4.0.3 中新加的。

8.reset() 重置数组 定义和用法

reset() 函数把数组的内部指针指向第一个元素,并返回这个元素的值。 若失败,则返回 FALSE。 语法 reset(array) 参数 array 描述 必需。输入的数组。 描述 preserve 9.list() 数组赋值 定义和用法

list() 函数用数组中的元素为一组变量赋值。 注意,list() 实际上是一种语言结构,不是函数。 语法

list(var1,var2...) 提示

注释:该函数只用于数字索引的数组,且假定数字索引从 0 开始。 $planet = array(

'asp', 'php', 'java', 'c++', '.net' );

list($no1,$no2,$no3) = $planet; //将数组中的前3个元素分别赋给list结构中对应的3个变量

结果 no1=asp

no2=php

no3=java

10.range() 创建数组

定义和用法

range() 函数创建并返回一个包含指定范围的元素的数组。 语法

range(first,second,step) 参数 first second 描述 必需。规定数组元素的最小值。 必需。规定数组元素的最大值。 可选。规定元素之间的步进制。默认是 1。 注释:该参数是 PHP 5 中加入的。 说明

该函数创建一个数组,包含从 first 到 second (包含 first 和 second)之间的整数或字符。

如果 second 比 first 小,则返回反序的数组。

step

例子 echo '

';

$arr1 = range(5,10); print_r($arr1);

$arr2 = range('a','f'); print_r($arr2);

$arr3 = range(2,10,2); print_r($arr3); ?> 输出:

Array (

[0] => 5 [1] => 6 [2] => 7 [3] => 8 [4] => 9 [5] => 10 ) Array (

[0] => a [1] => b [2] => c [3] => d [4] => e [5] => f ) Array (

[0] => 2 [1] => 4

[2] => 6 [3] => 8 [4] => 10 )

11.array_push() 压入数组元素 定义和用法

array_push() 函数向第一个参数的数组尾部添加一个或多个元素(入栈),然后返回新数组的长度。

该函数等于多次调用 $array[] = $value。 语法

array_push(array,value1,value2...) 参数 array value1 value2 提示和注释

注释:即使数组中有字符串键名,您添加的元素也始终是数字键。(参见例子 2)

注释:如果用 array_push() 来给数组增加一个单元,还不如用 $array[] =,因为这样没有调用函数的额外负担。

注释:如果第一个参数不是数组,array_push() 将发出一条警告。这和 $var[] 的行为不同,后者会新建一个数组。

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

array_push($arr,'java','c++'); 调用函数array_push()之后: Array

描述 必需。规定一个数组。 必需。规定要添加的值。 可选。规定要添加的值。

(

[0] => asp [1] => php [2] => jsp [3] => java [4] => c++ )

12.array_pop() 弹出数组元素 定义和用法

array_pop() 函数删除数组中的最后一个元素。 语法

array_pop(array)

参数 array 描述 必需。规定输入的数组参数。 13.array_intersect() 返回数组交集 定义和用法

array_intersect() 函数返回两个或多个数组的交集数组。

结果数组包含了所有在被比较数组中,也同时出现在所有其他参数数组中的值,键名保留不变。

注释:仅有值用于比较。 语法

array_intersect(array1,array2,array3...)

参数 array1 array2 array3 描述 必需。与其他数组进行比较的第一个数组。 必需。与第一个数组进行比较的数组。 可选。与第一个数组进行比较的数组。可以有多个。 $array1 = array(

'a'=>'green', 'red', 'blue' );

$array2 = array( 'b'=>'green', 'yellow', 'red' );

$result = array_intersect($array1, $array2); echo '

'; print_r($result); ?>  输出:

Array (

[a] => green

[0] => red )

14.array_intersect_assoc() 返回数组交集 定义和用法

array_intersect_assoc() 函数返回两个或多个数组的交集数组。 与 array_intersect() 函数 不同的是,本函数除了比较键值,还比较键名。 返回的数组中元素的键名保持不变。

15.array_flip() 函数返回反转数组 定义和用法

array_flip() 函数返回一个反转后的数组,如果同一值出现了多次,则最后一个键名将作为它的值,所有其他的键名都将丢失。

如果原数组中的值的数据类型不是字符串或整数,函数将报错。 语法

array_flip(array) 参数 array 描述 必需。规定输入的数组。 $olympic = array( 'Barcelona'=>1992, 'Atlanta'=>1996, 'Sydney'=>2000, 'Athens'=>2004, 'Beijing'=>2008 );

$nol = array_flip($olympic); 原数组:Array (

[Barcelona] => 1992 [Atlanta] => 1996 [Sydney] => 2000

[Athens] => 2004 [Beijing] => 2008 )

数组元素和索引对调之后:Array (

[1992] => Barcelona [1996] => Atlanta [2000] => Sydney [2004] => Athens [2008] => Beijing )

16.array_fill() 填充数组 定义和用法

array_fill() 函数用给定的值填充数组,返回的数组有number 个元素,值为 value。返回的数组使用数字索引,从 start 位置开始并递增。如果 number 为 0 或小于 0,就会出错。

语法

array_fill(start,number,value) 参数 start number value 例子

$arr = array_fill(2, 4, 'orange'); echo '

';

print_r($arr); ?> 输出:

Array (

[2] => orange [3] => orange [4] => orange [5] => orange )

17.array_count_values() 统计数组元素 定义和用法

array_count_values() 函数用于统计数组中所有值出现的次数。 本函数返回一个数组,其元素的键名是原数组的值,键值是该值在原数组中出现的次数。

语法

array_count_values(array) 参数 描述 描述 必需。数值,规定键的起始索引。 必需。数值,规定填充的数量,其值必须大于 0。 必需。规定要插入的值。

array $say = array( 'Say', 'you', 'say', 'me', 'Say', 'it',

'together' );

必需。规定输入的数组。 $say_tmp = array_count_values($say); 统计结果如下:Array (

[Say] => 2 [you] => 1 [say] => 1 [me] => 1 [it] => 1

[together] => 1 )

18.array_keys() 数组索引 定义和用法

array_key_exists() 函数判断某个数组中是否存在指定的 key,如果该 key 存在,则返回 true,否则返回 false。

array_keys() 函数返回包含数组中所有键名的一个新数组。 如果提供了第二个参数,则只返回键值为该值的键名。

如果 strict 参数指定为 true,则 PHP 会使用全等比较 (===) 来严格检查键值的数据类型。

语法

array_keys(array,value)

参数 array value

描述 必需。规定输入的数组。 可选。指定值的索引(键)。

可选。与 value 参数一起使用。可能的值: strict  true - 根据类型返回带有指定值的false - 默认值。不依赖类型。 键名。  19.array_map() 回调函数 定义和用法

array_map() 函数返回用户自定义函数作用后的数组。回调函数接受的参数数目应该和传递给 array_map() 函数的数组数目一致。

语法

array_map(function,array1,array2,array3...) 参数 function array1 array2 array3 例子

function cube($n) {

$cb = $n*$n*$n; return $cb; }

$a = array(1, 2, 3, 4, 5); $b = array_map(\"cube\

echo '计算原数组各元素的立方,结果如下:'; echo '
'; echo '

';

print_r($b);

描述 必需。用户自定义函数的名称,或者是 null。 必需。规定数组。 可选。规定数组。 可选。规定数组。

?> 输出:

计算原数组各元素的立方,结果如下: Array (

[0] => 1 [1] => 8 [2] => 27 [3] => 64 [4] => 125 )

20.in_array() 函数 定义和用法

in_array() 函数在数组中搜索给定的值。 语法

in_array(value,array,type) 参数 value array type 描述 必需。规定要在数组搜索的值。 必需。规定要搜索的数组。 可选。如果设置该参数为 true,则检查搜索的数据与数组的值的类型是否相同。 说明

如果给定的值 value 存在于数组 array 中则返回 true。如果第三个参数设置为 true,函数只有在元素存在于数组中且数据类型与给定值相同时才返回 true。

如果没有在数组中找到参数,函数返回 false。

注释:如果 value 参数是字符串,且 type 参数设置为 true,则搜索区分大小写。

例子

$planet = array( 'jsp', 'php', 'asp' );

$temp = 'php';

if(in_array('php',$planet)) {

echo 'php 存在于数组$planet中'; echo '
'; echo '
'; }

if(in_array($temp,$planet)) {

echo $temp.'存在于数组$planet中'; echo '
'; echo '
'; } else {

echo $temp.'不存在于数组$planet中'; echo '
'; echo '
'; } ?> 输出:

php 存在于数组$planet中 php存在于数组$planet中

因篇幅问题不能全部显示,请点此查看更多更全内容

Top