视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
php数组操作
2025-10-03 05:28:28 责编:小OO
文档
第三章    数组

一、什么是数组

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

二、声明数组

在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);

?>

输出:

Array

(

[0] => word

[1] => excel

[2] => outlook

[3] => access

)

?>

五、二维数组:

当一个数组的元素是一个一位数组时,则称之为二维数组。 

如, 

$str = array ( 

"网络编程语言"=>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",4=>"Dog");

print_r(array_merge($a));

?>

输出:

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

4.数组位置函数 prev()

定义和用法

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

如果内部指针已经超过数组的第一个元素之前,函数返回 false。

语法

prev(array)

参数描述
array必需。规定要使用的数组。
$planet = array(

'123',

'456',

'7',

);

$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必需。输入的数组。
sorttype可选。规定如何排列数组的值。可能的值:

∙SORT_REGULAR - 默认。以它们原来的类型进行处理(不改变类型)。 

∙SORT_NUMERIC - 把值作为数字来处理 

∙SORT_STRING - 把值作为字符串来处理 

∙SORT_LOCALE_STRING - 把值作为字符串来处理,基于本地设置*。 

$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必需。规定数组。
preserve可选。规定是否保留原始数组的键名。可能的值:true 和 false。

这个参数是 PHP 4.0.3 中新加的。

8.reset() 重置数组

定义和用法

reset() 函数把数组的内部指针指向第一个元素,并返回这个元素的值。

若失败,则返回 FALSE。

语法

reset(array)

参数描述
array必需。输入的数组。
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必需。规定数组元素的最大值。
step可选。规定元素之间的步进制。默认是 1。

注释:该参数是 PHP 5 中加入的。

说明

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

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

 例子

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必需。数值,规定填充的数量,其值必须大于 0。

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)

参数描述
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可选。指定值的索引(键)。
strict可选。与 value 参数一起使用。可能的值:

∙true - 根据类型返回带有指定值的键名。 

∙false - 默认值。不依赖类型。 

19.array_map() 回调函数

定义和用法

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

语法

array_map(function,array1,array2,array3...)

参数描述
function必需。用户自定义函数的名称,或者是 null。

array1必需。规定数组。
array2可选。规定数组。
array3可选。规定数组。
例子

function cube($n)

{

    $cb = $n*$n*$n;

    return $cb;

}

$a = array(1, 2, 3, 4, 5);

$b = array_map("cube", $a);

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

echo '
';

echo '

';

print_r($b);

?>

输出:

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

Array

(

[0] => 1

[1] => 8

[2] => 27

[3] =>

[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中下载本文

显示全文
专题