php中数组较为复杂,但是比其它许多高级语言的数组更灵活。
数组array是一组有序的变量,其中每个变量被称为一个元素,每个元素由一个特殊的标识符来区分,这个标识符称为键(key)(即下标)。
数组中得每个实体都包括键和值(value)。可以通过键值来获得相应数组元素。

声明数组

php中声明数组有两种方式。

一种是英语array()函数声明数组,另一种是直接通过数组元素赋值的方式声明数组。

函数括号中,各参数由逗号隔开,下标与数组元素值之前用=>进行连接。
函数定义时比较灵活,可以不写索引。

如果省略索引,会产生自动从0开始的整数索引,
如果索引是整数,则下一个的索引将是目前最大的整数索引加一。
如果定义了两个完全一样的索引,则后一个会覆盖前一个。

数组中的数据元素的数据类型可以不同,如果是数组类型的话,该数组则为二维数组。
$A=array(“123”,”abc”,”ABC”);
print_r($A);
利用函数进行数组的定义与输出。

$array[1]=” “
可以通过这种方式为数组元素赋值。

数组类型

php支持两种数组,分别为索引数组,联合数组。
前者使用数字为键,后者使用字符串为键。

1.数字索引数组

即键默认为从0开始的数组。
亦可定义键的值。

2.关联数组

其键名可以是数值和字符串混合的形式,只要键名有一个不为纯数字,这个数组便就为关联数组。
当为字符串时,键名最好加上引号。

输出数组

数组的输出使用函数print_r(array)

数组的构造

一维数组

当一个数组的元素是变量的时候,它就为一维数组。只保存一列内容。

二维数组

如果当一个数组的元素是一位数组,那么这个数组是二维数组。

遍历数组

foreach(array as $a)函数(循环函数)

使用foreach遍历函数。
将前者数组的每个元素的值一一赋值给后者。
假如$A为定义好的数组。那么
foreach($A as $a)
{ echo $a;
}
该代码就会把数组$A的值一一输出。

foreach遍历和each遍历的区别

each()函数的作用是输出当前指针指向的数组元素并且指针在向前移动一位,当前指针已经指向数组元素的末尾的时候,each会返回false。这个时候,如果后面还有代码是通过each循环输出,则返回false,这个时候需要重置指针,让指针指向数组元素的第一个元素。
foreach 每次都会自己重置数组指针,把指针始终指向数组的第一个元素。

list()函数

该函数只能适用于数字索引的且为0开头的数组。
将某个数组中的元素赋值给括号内的变量。
使用示例如下:
$a=array(ab,cd,ef);
list($b,$c,$d)=$a;
echo$b,$c,$d;
此时输出的内容为abcdef。

字符串与数组的转换

函数explode()和函数implode()

这二函数分别为切割字符串为数组和组合数组为字符串。
在字符串的文本中已写,不再赘述。

统计数组元素个数

count(array,【COUNT_RECURSIVE】)函数。
前者为被统计的数组,该函数将返回元素个数。
但如果是非一维数组,则不加上可选参数时,会将其视作一维数组返回元素数。
加上可选参数,则会递归的统计数组中元素数量并输出。
$a=array(“ab”=>array(12,34,56),cd,ef);
echocount($a,COUNT_RECURSIVE);
该代码则会在屏幕显示6,代表有六个元素。
即一维的每个记为1个,一维中的数组的元素同样。

查询数组中指定元素

array_search()函数
用于在数组中搜索给定的值,找到后返回键名,否则返回false
array_search(needle array[ ])
needle指定在数组中搜索的值,array指定被搜索的数组
括号内为可选参数,如果值为true则还将在数组中检查给定值的类型。

获取数组最后一个元素

array_pop()函数
获取并返回数组的最后一个元素,并将数组的长度减一,如果数组为空,则返回null。
(可以通过这种办法反向输出,做到使数组头尾反转)
$a=array(ab,cd,ef);
$w=0;
while($a!=null)
{
$b=array_pop($a);
echo$b;
$d[$w]=”$b”;
$w=$w+1;
}
print_r($d);
如上代码实现我所说的功能。

向数组中添加元素

array_push(array,ver,[ver]…)函数
array为被添加的数组,ver是要添加的内容,可添加多个元素。
该函数返回新的数组的总元素值。

删除数组中得重复元素

array_unique(array)函数
用于将值作为字符串排序,然后对每个值只保留第一个键名,忽略所有后面的键名。
即删除数组中得重复元素。
返回值为删除重复元素后的数组。