一、什么是数组
数组就是一组数据的集合,把一系列数据组织起来,形成一个可操作的整体。数组的每个实体都包含两项:键和值。
二、声明数组
在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 | 可选。可指定的多个输入数组。 |
$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 | 必需。规定要使用的数组。 |
'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 | 必需。规定要使用的数组。 |
'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 - 把值作为字符串来处理,基于本地设置*。 |
'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 中新加的。 |
定义和用法
reset() 函数把数组的内部指针指向第一个元素,并返回这个元素的值。
若失败,则返回 FALSE。
语法
reset(array)
| 参数 | 描述 |
| array | 必需。输入的数组。 |
定义和用法
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 | 必需。规定输入的数组参数。 |
定义和用法
array_intersect() 函数返回两个或多个数组的交集数组。
结果数组包含了所有在被比较数组中,也同时出现在所有其他参数数组中的值,键名保留不变。
注释:仅有值用于比较。
语法
array_intersect(array1,array2,array3...)
| 参数 | 描述 |
| array1 | 必需。与其他数组进行比较的第一个数组。 |
| array2 | 必需。与第一个数组进行比较的数组。 |
| array3 | 可选。与第一个数组进行比较的数组。可以有多个。 |
'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 | 必需。规定输入的数组。 |
'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',
'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 - 默认值。不依赖类型。 |
定义和用法
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中下载本文