【PHP基础知识】——PHP数组操作详解

来源:互联网 发布:java linklist方法 编辑:程序博客网 时间:2024/06/07 12:33

一、前言

所谓数组,是无序的元素序列。若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。数组是特殊的变量,它可以同时保存一个以上的值。在PHP中用array来定义数组变量。

二、PHP数组

在PHP中,有三种数组类型:
索引数组 - 带有数字索引的数组:array里面包含多个value,value的索引(key值)是从0开始计数的整数;
关联数组 - 带有指定键的数组:array里是key=>value格式,key可自定义,类型可以是整数和字符串,key值不可重复;
多维数组 - 包含一个或多个数组的数组:array里面包含key/value,其中value又是一组array;


三、PHP常用数组操作方法

数组操作:
1、统计数组个数(长度):①int count(array()) ②int sizeof(array())
2、遍历数组元素:foreach()、each()、list()
①foreach使用:将数组在循环中把每一个元素的key/value对取出来,循环次数为数组长度。
foreach($数组名 as $<key变量>=>$<value变量>);
②each使用:each的指针指向第一个键值对,并返回第一个数组元素的key/value形式的数组,原来的数组指针后移一位:
$<变量>=each($<数组名>)——每进行一次完成后,指针后移一位;
③list使用:list用来把数组用的值赋给一些变量,看下面例子:
list($<新变量1>,$<新变量2>……)=$<数组名>;通常使用方式是list($var1,$var2……)=each($array);
注:list只认识key为数字的索引

3、数组指针操作:
current($array)—返回当前元素(指针不变);
next($array)—后移后返回;
each($array)—返回后后移;
end($array)—返回末尾元素(指针不变);
prev($array)—后退一位再返回;
reset($array)—将指针复位。

4、数组排序函数:
①sort()—升序(不生成新数组):
sort($数组名,[参数]);
②对关联数组排序:asort()—按值(保持key不变);
③ksort()—按key排序;
④反向排序:rsort()、arsort()、krsort();
⑤按随机方式排序:shuffle();
⑥与原排序方法相反的排序:array_reverse();

5、数组的其他常用方法:
①对数组的每个元素调用函数:array_walk($<数组名>,$function);
②创建一个1-10的升序数组:$var=range(1,10,[步长]);
③array_unique():返回一个去除了原数组中重复值的新数组,原数组不变;
④array_unshift()函数将新元素添加到数组头,array_push()函数将每个新元素添加到数组末尾;
⑤array_shift()删除数组头第一个元素,与其相反的函数是array_pop(),删除并返回数组末尾的一个元素;
⑥array_rand()返回数组中的一个或多个键;
⑦unset():删除数组,释放内存;
⑧array_splice(array $input,int $offset,[int $length,$replacement]):去掉数组中的某一部分并用其它值取代
⑨array_search($needle,array $input):在数组中搜索给定的value值,如果成功则返回首个相应的键名key。


四、注意点

1、数组的不同拼接方法的区别:
①数组追加写入方式:$数组名[]=$新值;
②数组“+”运算:将第二个数组中key值与第一个不同的拼接到后面,相同的则不操作;
③数组的array_merge()函数:
key为数字索引时:
将$array1与$array2全部拼接起来,相同key值不会覆盖,值合并后,键名会连续方式重新索引
key为字符串索引时:
将$array1与$array2全部拼接起来,返回值包含array1和2的全部key/value对,当array1与array2的key值存在相同的情况时,array2的覆盖array1的;

2、数组查找时in_array与array_search的区别:
in_array(): 主要的功能在于查询是否存在,若存在则回传TRUE,若是不存在则回传FLASE,它单纯是一个用来判断条件是否存在数组的功能,而且使用的方法也相当的简单。
array_search():主要的功能除了查询是否存在外,它会回传搜寻到的KEY值,意味著你能够利用这个KEY值直接套用到你的程序中,可以直接使用这个搜寻到的key值,它的使用方法也相当的简单。