PHP 数组入门教程小结


Posted in PHP onMay 20, 2009

这么多的数组函数我们该怎么学习?其实我们只需要清楚,我们需要对数组做哪些操作,然后把这些操作归类,心中就有了大概的印象,然后随着你的实践,这些函数你就很清楚了,在这里提醒大家的是手册要常备!废话不多说,数组函数一般归为以下几类(看到英文别怕哦):
Outputting arrays
Creating arrays
Testing for an array
Locating array elements
Traversing arrays
Determining array size and element uniqueness
Sorting arrays
Merging, slicing, splicing, and dissecting arrays

Outputting arrays
print_r()
不熟悉这个的我就不想多说了!最基本的函数,当然要输出数组也可是使用循环结构输出,不过有这么方便的输出函数干吗不用呢!

Creating arrays
array()
这个函数我也不想说了,这其实只能算语言结构,大家在新建数组的时候都用到过,没用过的我只能说,兄弟,我无语了!
list()
这个函数和上面提到的 array()一样,只是个语言结构,它通过一步操作给一组变量赋值!
具体示例请查看手册!
range();
array range ( mixed low, mixed high[, number step] )
建立一个包含指定范围单元的数组
示例: $arr =range(0, 6);
相当于 $arr =array(0, 1, 2, 3, 4, 5, 6);
一般数据按从低到高排列,如果 low> high,则从高到低排列;

Testing for an array
is_array();
测试变量是否array类型,是则返回true,不是则返回false,很基本,很实用的函数!

Adding and removing array elements
array_push()
int array_push ( array &target_array,mixed var [, mixed ...] )
将一个或多个单元从末尾添加至数组!返回新数组的单元总数!
示例:

复制PHP内容到剪贴板
PHP代码:
$states =array( ‘Ohio' , ‘New York' );
array_push ( $states , ‘California' , ‘Texas'
);
//output: array((‘Ohio',‘New York' , ‘California',‘Texas');

array_pop();
弹出并返回数组的最后一个单元,并将数组长度减一。使用后会重置数组指针!
示例:

复制PHP内容到剪贴板
PHP代码:
$states =array( ‘Ohio' , ‘New York' );
$state = array_pop ( $states
);
//output: New York

array_shift();
与array_pop类似,只不过它移出和返回的是数组的第一个值。数字键名将重新从零开始记数,文字键名则保持不变!

array_unshift();
与array_push类似,只不过是从数组头部插入数据!数字键名将重新从零开始记数,文字键名则保持不变!

array_pad();
array array_pad ( array input, intpad_size, mixed pad_value )
用值将数组填充到指定长度!
pad_size为正,则从右侧开始填补,为负,从左侧开始填补,小与数组长度,则保持数组不变!示例见手册!

Locating array elements
in_array();
检查数组中是否存在某个值,基础,不说了,具体见手册!

array_keys();
array array_keys ( array input [,mixed search_value [, bool strict]] )
返回数组中的所有键名。如果选定search_value,则返回选定的键名!自PHP 5]起,可以用strict参数来进行全等比较( ===)。

array_key_exists();
bool array_key_exists ( mixed key,array search )
检查给定的键名或索引是否存在于数组中,存在则返回true。一些更具体的应用记得查看手册!

array_values();
array array_values ( array input )
与array_keys()类似!返回的是数组的所有键值!

array_search();
mixed array_search ( mixed needle,array haystack [, bool strict] )
在 haystack中搜索 needle参数并在找到的情况下返回键名,否则返回 FALSE
如果needle是字符串,则比较区分大小写!
如果strict是true,还得比较类型
如果needle在haystack中出现不止一次,则返回第一个匹配的键。要返回所有匹配值的键,应该用array_keys()加上可选参数search_value来代替!

Traversing arrays

key();

mixed key ( array &array )
返回数组中当前单元的键名!

reset();
重置数组的指针。

each();
返回数组中当前单元的键 /值对,并将指针下移一位!

current();
返回当前被内部指针指向的数组单元的值,并不移动指针。如果超出了单元列表的末端,则返回 false

end();
array的内部指针移动到最后一个单元并返回其值。

next();
返回数组内部指针指向的下一个单元的值,或当没有更多单元时返回 FALSE

prev();
返回数组内部指针指向的前一个单元的值,或当没有更多单元时返回 FALSE

array_walk();
bool array_walk ( array &array,callback funcname [, mixed userdata] )
具体描述请参考手册!
示例:

array_reverse();
array array_reverse ( array array [,bool preserve_keys] )
接受数组 array作为输入并返回一个单元为相反顺序的新数组,如果 preserve_keys TRUE 则保留原来的键名。
示例:

复制PHP内容到剪贴板
PHP代码:
$states =array( ‘Delaware' , ‘Pennsylvania' , ‘New Jersey' );
print_r ( array_reverse ( $states
));
//Array ([0]=>New Jersey [1]=>Pennsylvania[2]=>Delaware)
$states = array( ‘Delaware' , ‘Pennsylvania' , ‘New   Jersey'
);
print_r ( array_reverse ( $states , 1
));
//Array ([2]=>New Jersey [1]=>Pennsylvania[0]=>Delaware)

array_flip();
array array_flip ( array trans )
交换数组中的键 /值对,注意 trans 中的值需要能够作为合法的键名,例如需要是 integer 或者 string 。如果值的类型不对将发出一个警告,并且有问题的键/值对将不会反转。
如果同一个值出现了多次,则最后一个键名将作为它的值,所有其它的都丢失了。
示例:

复制PHP内容到剪贴板
PHP代码:
$trans =array( "a" => 1 , "b" => 1 , "c" => 2 );
$trans = array_flip ( $trans
);
print_r ( $trans
);
//Array([1]=>b[2]=>c );

Determining array size and element uniqueness

count();
计算数组中的单元数目或对象中的属性个数,很基本哦!

array_count_values();
返回一个数组,该数组用input数组中的值作为键名,该值在input数组中出现的次数作为值。
示例:

复制PHP内容到剪贴板
PHP代码:
$array= array( 1 , "hello" , 1 , "world" , "hello" );
print_r ( array_count_values ( $array ));

array_unique();
array array_unique ( array array )
接受 array作为输入并返回没有重复值的新数组。
示例:

复制PHP内容到剪贴板
PHP代码:
$input =array( "a" => "green" , "red" , "b" => "green" , "blue" , "red" );
$result = array_unique ( $input
);
print_r ( $result );

详细用法请参见手册!

Sorting arrays

sort();
本函数对数组进行排序。当本函数结束时数组单元将被从最低到最高重新安排。
注意 : 本函数为array中的单元赋予新的键名。这将删除原有的键名而不仅是重新排序。

natsort();
利用自然排序法对数组进行排序!
示例:

复制PHP内容到剪贴板
PHP代码:
$array1 = $array2 = array( "img12.png" , "img10.png" , "img2.png" , "img1.png" );
sort ( $array1
);
echo
"Standard sorting\n"
;
print_r ( $array1
);natsort ( $array2 );
echo
"\nNatural order sorting\n"
;
print_r ( $array2 );

natcasesort();
natsort()一致,除了不区分大小写!

rsort();
sort()一致,这个是逆向排序。
asort();
sort()一直,但保持键名不变。
array_multisort();
对多个数组或多维数组进行排序,具体参考手册,有详细说明!
arsort();
rsort()类似,但保持键名不变。
ksort();
sort()类似,对键名进行排序。
krsort();
ksort()类似,但是逆向排序。
usort();
利用用户自定义函数对数组进行排序!

Merging, slicing, splicing, and dissectingarrays

array_combine();
array array_combine ( array keys,array values )
创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值

array_merge();
array array_merge ( array array1 [,array array2 [, array ...]] )
将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。
如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。
然而,如果数组包含数字键名,后面的值将不会 覆盖原来的值,而是附加到后面。
示例:

复制PHP内容到剪贴板
PHP代码:
$array1 =array( "color" => "red" , 2 , 4 );
$array2 = array( "a" , "b" , "color" => "green" , "shape" => "trapezoid" , 4
);
$result = array_merge ( $array1 , $array2
);
print_r ( $result );

如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。

复制PHP内容到剪贴板
PHP代码:
$array1 = array();
$array2 = array( 1 => "data"
);
$result = array_merge ( $array1 , $array2 );

如果你想完全保留原有数组并只想新的数组附加到后面,用+运算符:

复制PHP内容到剪贴板
PHP代码:
$array1 = array();
$array2 = array( 1 => "data"
);
$result = $array1 + $array2 ;

array_merge_recursive();
array array_merge_recursive ( arrayarray1 [, array ...] )
将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。
如果输入的数组中有相同的字符串键名,则这些值会被合并到一个数组中去,这将递归下去,因此如果一个值本身是一个数组,本函数将按照相应的条目把它合并为另一个数组。然而,如果数组具有相同的数组键名,后一个值将不会覆盖原来的值,而是附加到后面。

复制PHP内容到剪贴板
PHP代码:
$ar1 = array( "color" =>array( "favorite" => "red" ), 5 );
$ar2 = array( 10 , "color" => array( "favorite" => "green" , "blue"
));
$result = array_merge_recursive ( $ar1 , $ar2
);
print_r ( $result );

更详细的使用请参加手册!

array_slice();
array array_slice ( array array, intoffset [, int length [, bool preserve_keys]] )
从数组中取出一段。
如果offset非负,则序列将从array中的此偏移量开始。如果offset为负,则序列将从array中距离末端这么远的地方开始。
如果给出了length并且为正,则序列中将具有这么多的单元。如果给出了length并且为负,则序列将终止在距离数组末端这么远的地方。如果省略,则序列将从offset开始一直到array的末端。
示例:

复制PHP内容到剪贴板
PHP代码:
$input = array( "a" , "b" , "c" , "d" , "e" );
$output = array_slice ( $input , 2 );      
// returns"c", "d", and "e"
$output = array_slice ( $input , - 2 , 1 );  
// returns "d"
$output = array_slice ( $input , 0 , 3 );   
// returns "a","b", and "c"
// note the differences in the array keys
print_r ( array_slice ( $input , 2 , - 1
));
print_r ( array_slice ( $input , 2 , - 1 , true ));

array_splice();
array array_splice ( array&input, int offset [, int length [, array replacement]] )
把input数组中由offset和length指定的单元去掉,如果提供了replacement参数,则用replacement数组中的单元取代。返回一个包含有被移除单元的数组。注意input中的数字键名不被保留。
如果offset非负,则序列将从array中的此偏移量开始。如果offset为负,则序列将从array中距离末端这么远的地方开始。
如果给出了length并且为正,则序列中将具有这么多的单元。如果给出了length并且为负,则序列将终止在距离数组末端这么远的地方。如果省略,则序列将从offset开始一直到array的末端。
具体应用参见手册!

array_intersect();
array array_intersect ( arrayarray1, array array2 [, array ...] )
返回一个数组,该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值。注意键名保留不变。
示例:

复制PHP内容到剪贴板
PHP代码:
$array1 =array( "a" => "green" , "red" , "blue" );
$array2 = array( "b" => "green" , "yellow" , "red"
);
$result = array_intersect ( $array1 , $array2 );

array_intersect_assoc();
注意和 array_intersect()不同的是键名也用于比较。

array_diff();
array_intersect()类似,只不过它是计算数组的差集

array_diff_assoc();
array_intersect_assoc()类似,只不过它是计算数组的差集

Other useful array functions

array_rand();
mixed array_rand ( array input [,int num_req] )
从数组中随机取出一个或多个单元。

shuffle();
bool shuffle ( array &array )
本函数打乱(随机排列单元的顺序)一个数组。
本函数为 array 中的单元赋予新的键名。这将删除原有的键名而不仅是重新排序。

array_sum();
将数组中的所有值的和以整数或浮点数的结果返回。

array_chunk();
array array_chunk ( array input, intsize [, bool preserve_keys] )
将一个数组分割成多个数组,其中每个数组的单元数目由 size 决定。最后一个数组的单元数目可能会少几个。得到的数组是一个多维数组中的单元,其索引从零开始。
将可选参数preserve_keys 设为 TRUE,可以使 PHP 保留输入数组中原来的键名。如果你指定了 FALSE,那每个结果数组将用从零开始的新数字索引。默认值是 FALSE

PHP 相关文章推荐
PHP的FTP学习(四)
Oct 09 PHP
php heredoc和phpwind的模板技术使用方法小结
Mar 28 PHP
一步一步学习PHP(4) php 函数 补充2
Feb 15 PHP
PHP imagecreatefrombmp 从BMP文件或URL新建一图像
Jul 16 PHP
PHP 如何利用phpexcel导入数据库
Aug 24 PHP
PHP 面向对象程序设计(oop)学习笔记(一) - 抽象类、对象接口、instanceof 和契约式编程
Jun 12 PHP
MySql数据库查询结果用表格输出PHP代码示例
Mar 20 PHP
php实现数字补零的方法总结
Sep 12 PHP
Smarty模板配置实例简析
Jul 20 PHP
Laravel 微信小程序后端实现用户登录的示例代码
Nov 26 PHP
PHP中用Trait封装单例模式的实现
Dec 18 PHP
PHPstorm激活码2020年5月13日亲测有效
Sep 17 PHP
php 无限级 SelectTree 类
May 19 #PHP
PHP日期时间函数的高级应用技巧
May 16 #PHP
PHP 模拟登陆MSN并获得用户信息
May 16 #PHP
抓取YAHOO股票报价的类
May 15 #PHP
PHP 采集心得技巧
May 15 #PHP
DISCUZ 论坛管理员密码忘记的解决方法
May 14 #PHP
PHP获取当前文件所在目录 getcwd()函数
May 13 #PHP
You might like
PHP Smarty生成EXCEL文档的代码
2008/08/23 PHP
PHP学习笔记之字符串编码的转换和判断
2014/05/22 PHP
ThinkPHP的截取字符串函数无法显示省略号的解决方法
2014/06/25 PHP
[对联广告] JS脚本类
2006/08/27 Javascript
Three.js源码阅读笔记(光照部分)
2012/12/27 Javascript
JavaScript中跨域调用Flash的方法
2014/08/11 Javascript
Node.js 的异步 IO 性能探讨
2014/10/08 Javascript
深入探密Javascript数组方法
2015/01/08 Javascript
jQuery实现tag便签去重效果的方法
2015/01/20 Javascript
JavaScript中计算网页中某个元素的位置
2015/06/10 Javascript
CSS3实现动态背景登录框的代码
2015/07/28 Javascript
jQuery实现的Tab滑动选项卡及图片切换(多种效果)小结
2015/09/14 Javascript
JavaScript数组方法总结分析
2016/05/06 Javascript
基于angular中的重要指令详解($eval,$parse和$compile)
2016/10/21 Javascript
详解vue mint-ui源码解析之loadmore组件
2017/10/11 Javascript
微信小程序官方动态自定义底部tabBar的例子
2019/09/04 Javascript
p5.js临摹旋转爱心
2019/10/23 Javascript
在vue项目中 实现定义全局变量 全局函数操作
2020/10/26 Javascript
python3抓取中文网页的方法
2015/07/28 Python
分享一个可以生成各种进制格式IP的小工具实例代码
2017/07/28 Python
python与sqlite3实现解密chrome cookie实例代码
2018/01/20 Python
使用pandas把某一列的字符值转换为数字的实例
2019/01/29 Python
Python中请不要再用re.compile了
2019/06/30 Python
Python Collatz序列实现过程解析
2019/10/12 Python
Python多线程thread及模块使用实例
2020/04/28 Python
基于HTML5 Canvas 实现商场监控实例详解
2017/11/20 HTML / CSS
编程实现去掉XML的重复结点
2014/05/28 面试题
应届生会计求职信
2013/11/11 职场文书
《孔子游春》教学反思
2014/02/25 职场文书
鼓舞士气的口号
2014/06/16 职场文书
2014年安全生产目标责任书
2014/07/23 职场文书
声乐专业大学生职业生涯规划书:理想的未来需要自己去打造
2014/09/20 职场文书
幼儿园家长反馈意见
2015/06/03 职场文书
教师研修随笔感言
2015/11/18 职场文书
Oracle11g r2 卸载干净重装的详细教程(亲测有效已重装过)
2021/06/04 Oracle
SpringBoot项目部署到阿里云服务器的实现步骤
2022/06/28 Java/Android