介绍几个array库的新函数 php


Posted in PHP onDecember 29, 2006

我们手头的PHP资料不多,大家是不是都有一份php4gb.chm。我最欣赏它里面的函数库部分了,真正的在线帮助。但是PHP发展的脚步实在太快了,你睢,我最近在www.php.net/manual/ 又找到了一些扩展的数组函数。 

下面我把它们介绍给大家吧,我的英文水平不高,有译的不对的地方,请指正。 
格式是这样的: 

函数名 支持版本 

函数声明 
说明及参数、返回值 

例子 

OK,Let's go. 

//************************* 
array_flip (PHP4 >= 4.0b4) 

array array_flip (array trans) 

将数组trans的key、value交换,就是key变value,而value变key了。 
返回完成处理的数组。 

例: 
$a[0]="abc"; 
$a[1]="def"; 
After an array_flip() you get: 
$a["abc"]=0; $a["def"]=1; 

//*************************** 
array_count_values (PHP4 >= 4.0b4) 

array array_count_values (array input) 
统计input数组中各个值的个数。返回一个数组,以input的值做为key,以出现个数为value的新数组。 

例: 
$array = array (1, "hello", 1, "world", "hello"); 
array_count_values ($array); 
// returns array (1=>2, "hello"=>2, "world"=>1) 

//***************************** 
array_merge (PHP4 ) 

array array_merge (array array1, array array2 [, array ...]) 
合并多个数组,把array2的内容加在array1的后面。返回结果数组。 
如果是关联数组,以字串为key,出现同名的key,则后面的会覆盖前面的,而下标数组不会出现覆盖的现象,只是添加在后面。 

例: 
$array1 = array ("color" => "red", 2, 4); 
$array2 = array ("a", "b", "color" => "green", "shape" => "trapezoid", 4); 
array_merge ($array1, $array2); 
//Resulting array will be array("color" => "green", 2, 4, "a", "b", "shape" => "trapezoid", 4). 

See also array_merge_recursive(). 

//****************************** 
array_merge_recursive (PHP4 >= 4.0.1) 

array array_merge_recursive (array array1, array array2 [, array ...]) 
递归合并数组,与上个函数基本类似。区别在于,在关联数组方面,它不是简单地把相同的key合并,还是生成一个二维数组来合并这相同key的value。(表达不清,不好意思,看例子吧)。 

例: 
$ar1 = array ("color" => array ("favorite" => "red"), 5); 
$ar2 = array (10, "color" => array ("favorite" => "green", "blue")); 
$result = array_merge_recursive ($ar1, $ar2); 

//Resulting array will be array ("color" => array ("favorite" => array ("red", "green"), "blue"), 5, 10). 

明白了吗?red,green被合并成一个新的数组了,放在favorite里。 

See also array_merge(). 

//******************************* 
array_intersect (PHP4 >= 4.0.1) 

array array_intersect (array array1, array array2 [, array ...]) 
取多个数组的交集,返回包含交集元素的新数组。 
以array1为基础的,所以了,如果是关联数组,那key值就是array1的了。见例子。 

例: 
$array1 = array ("a" => "green", "red", "blue"); 
$array2 = array ("b" => "green", "yellow", "red"); 
$result = array_intersect ($array1, $array2); 
//This makes $result have array ("a" => "green", "red"); 

See also array_diff(). 

//******************************************* 
array_diff (PHP4 >= 4.0.1) 

array array_diff (array array1, array array2 [, array ...]) 

与上个函数相反,这是取多个数组的差集了。 

例: 
$array1 = array ("a" => "green", "red", "blue"); 
$array2 = array ("b" => "green", "yellow", "red"); 
$result = array_diff ($array1, $array2); 

//This makes $result have array ("blue"); 

See also array_intersect(). 

//******************************************* 
array_keys (PHP4 ) 
array_values (PHP4) 

array array_keys (array input [, mixed search_value]) 
array array_values (array input) 

这两个函数有关系,放在一起了。 
array_keys可以取出数组所有的key,如果定义了search_value,就只取相应的key值。 
array_values取出数组input的所有value值。 

例: 

$array = array ("size" => "XL", "color" => "gold"); 
array_values ($array); // returns array ("XL", "gold") 

$array = array (0 => 100, "color" => "red"); 
array_keys ($array); // returns array (0, "color") 

$array = array ("blue", "red", "green", "blue", "blue"); 
array_keys ($array, "blue"); // returns array (0, 3, 4) 

//********************************************** 
array_multisort (PHP4 >= 4.0b4) 

bool array_multisort (array ar1 [, mixed arg [, mixed ... [, array ...]]]) 

对多个数组同时进行排序,或是对一个多维数组进行多个维的排序。(很有用哦,我上回在中文用户就问了这个问题)。 

输入的数组被处理成表的列,按行来排序,有点类似于sql语句中的order by条件。 
这个函数的参数不常见,但是很灵活。可是一个数组或是下面这几个标志。 

SORT_ASC - 升序 

SORT_DESC - 降序 

SORT_REGULAR - 常规比较 

SORT_NUMERIC - 数值比较 

SORT_STRING - 字串比较 

一个数组不可以同时给两种类型的排序标志(这个当然了)。每个数组后的标志只对此数组有效。缺省为 SORT_ASC 和 SORT_REGULAR 。 

如果正常,返回true,否则返回false。 

例1: 
$ar1 = array ("10", 100, 100, "a"); 
$ar2 = array (1, 3, "2", 1); 
array_multisort ($ar1, $ar2); 

//结果是 $ar1 = 10, "a", 100, 100. $ar2= 1, 1, 2, "3". 

例2: 
$ar = array (array ("10", 100, 100, "a"), array (1, 3, "2", 1)); 
array_multisort ($ar[0], SORT_ASC, SORT_STRING, 
$ar[1], SORT_NUMERIC, SORT_DESC); 

// after sorting, the first array will contain 10, 100, 100, "a" (it was sorted as strings in ascending order), and the second one will contain 1, 3, "2", 1 (sorted as numbers, in descending order). 

不过,上面这个例子我试了一下,不行,会报参数3要求是数组的错误。(???这个俺也不知了) 

如果你直接用 array_multisort($ar[0],SORT_ASC,$ar[1],SORT_DESC);可以。 

//****************************************** 
array_pop (PHP4 ) 
array_push 
array_shift 
array_unshift 

mixed array_pop (array array) 
int array_push (array array, mixed var [, mixed ...]) 
mixed array_shift (array array) 
int array_unshift (array array, mixed var [, mixed ...]) 

数组作为栈来用的函数。具体使用比较简单了: 

pop弹出最后一个元素,返回元素值。 
push把参数var加入数组最后。返回位置。与$array[]=$var 功能相同。返回数组新的元素个数。 
shift把数组第一个元素弹出,其它顺移一位,相当于左位移。但数组元素个数减小1。返回弹出的元素。 
unshift在数组前面加入一个或多个元素,返回新的数组个数。 

Example 1. Array_pop() example 

$stack = array ("orange", "apple", "raspberry"); 
$fruit = array_pop ($stack); 
//After this, $stack has only 2 elements: "orange" and "apple", and $fruit has "raspberry". 

Example 2. Array_push() example 

$stack = array (1, 2); 
array_push ($stack, "+", 3); 
//This example would result in $stack having 4 elements: 1, 2, "+", and 3. 

Example 3. Array_shift() example 

$args = array ("-v", "-f"); 
$opt = array_shift ($args); 
//This would result in $args having one element "-f" left, and $opt being "-v". 

Example 4. Array_unshift() example 

$queue = array ("p1", "p3"); 
array_unshift ($queue, "p4", "p5", "p6"); 
//This would result in $queue having 5 elements: "p4", "p5", "p6", "p1", and "p3". 

//*************************************** 
array_rand (PHP4 >= 4.0.0) 

mixed array_rand (array input [, int num_req]) 

从数组中随机选出一个或多个元素。参数num_req给出要选出的元素个数,缺省为1。 
返回一个数组,内容是所选出元素的key。 

事先要先调用 srand() 来产生随机数种子。 

Example 1. Array_rand() example 

srand ((double) microtime() * 10000000); 
$input = array ("Neo", "Morpheus", "Trinity", "Cypher", "Tank"); 
$rand_keys = array_rand ($input, 2); 
print $input[$rand_keys[0]]."\n"; 
print $input[$rand_keys[1]]."\n"; 

//************************************** 
array_reverse (PHP4 >= 4.0b4) 

array array_reverse (array input) 
返回一个新数组,把input的元素取相反次序。 

Example 1. Array_reverse() example 

$input = array ("php", 4.0, array ("green", "red")); 
$result = array_reverse ($input); 
//This makes $result have array (array ("green", "red"), 4.0, "php"). 

//**************************************** 

array_slice (PHP4 ) 

array array_slice (array array, int offset [, int length]) 
取一个数组的一部分,从offset开始,长度为length,缺省为到结束。 
返回一个新数组。 

offset若为正,从数组的offset位置开始,若为负,则从数组的结尾倒数算起。 
length为正,是新数组的长度,为负,则也是从数组的结尾倒数。 

Example 1. Array_slice() examples 

$input = array ("a", "b", "c", "d", "e"); 

$output = array_slice ($input, 2); // returns "c", "d", and "e" 
$output = array_slice ($input, 2, -1); // returns "c", "d" 
$output = array_slice ($input, -2, 1); // returns "d" 
$output = array_slice ($input, 0, 3); // returns "a", "b", and "c" 

//****************************************** 

array_splice (PHP4 ) 

array array_splice (array input, int offset [, int length [, array replacement]]) 

从数组中移去从offset开始,长度为length的部份,如果给出了replacement[]参数,则用此参数来取代移去部份。 

对于offset、length的处理判断,与上例相同。 
如果有replacement参数,则用此参数来取代移去部份,如果没有移去,则在offset位置插入。 

以下操作等效: 
array_push ($input, $x, $y) array_splice ($input, count ($input), 0, 
array ($x, $y)) 
array_pop ($input) array_splice ($input, -1) 
array_shift ($input) array_splice ($input, 0, 1) 
array_unshift ($input, $x, $y) array_splice ($input, 0, 0, array ($x, $y)) 
$a[$x] = $y array_splice ($input, $x, 1, $y) 

返回一个包含移去元素以后的新数组。 

Example 1. Array_splice() examples 

$input = array ("red", "green", "blue", "yellow"); 

array_splice ($input, 2); // $input is now array ("red", "green") 
array_splice ($input, 1, -1); // $input is now array ("red", "yellow") 
array_splice ($input, 1, count($input), "orange"); 
// $input is now array ("red", "orange") 
array_splice ($input, -1, 1, array("black", "maroon")); 
// $input is now array ("red", "green", 
// "blue", "black", "maroon") 

//*********************** 
array_unique (PHP4 >= 4.0.1) 

array array_unique (array array) 

从一个数组中移去重复的值。返回新的数组。 
如果是关联数组,key以第一个为准。 

Example 1. Array_unique() example 

$input = array ("a" => "green", "red", "b" => "green", "blue", "red"); 
$result = array_unique ($input); 
//This makes $result have array ("a" => "green", "red", "blue");. 

PHP 相关文章推荐
PHP入门速成(2)
Oct 09 PHP
Access数据库导入Mysql的方法之一
Oct 09 PHP
一个简单的MySQL数据浏览器
Oct 09 PHP
一个可以删除字符串中HTML标记的PHP函数
Oct 09 PHP
php简单开启gzip压缩方法(zlib.output_compression)
Apr 13 PHP
php下载excel无法打开的解决方法
Dec 24 PHP
php如何解决无法上传大于8M的文件问题
Mar 10 PHP
php实现斐波那契数列的简单写法
Jul 19 PHP
PHP实现无限极分类图文教程
Nov 25 PHP
PHP中Session和Cookie是如何操作的
Oct 10 PHP
深入浅析Yii admin的权限控制
Aug 31 PHP
thinkPHP5.0框架URL访问方法详解
Mar 18 PHP
简单的过滤字符串中的HTML标记
Dec 25 #PHP
一个PHP模板,主要想体现一下思路
Dec 25 #PHP
ob_start(),ob_start('ob_gzhandler')使用
Dec 25 #PHP
php预定义常量
Dec 25 #PHP
php中看实例学正则表达式
Dec 25 #PHP
谈谈新手如何学习PHP
Dec 23 #PHP
服务器端解压缩zip的脚本
Dec 22 #PHP
You might like
十天学会php之第八天
2006/10/09 PHP
ThinkPHP3.1.3版本新特性概述
2014/06/19 PHP
浅谈PHP中Stream(流)
2015/06/08 PHP
jquery的相对父元素和相对文档定位示例代码
2013/08/02 Javascript
jQuery怎么解析Json字符串(Json格式/Json对象)
2013/08/09 Javascript
关于Jquery操作Cookie取值错误的解决方法
2013/08/26 Javascript
node.js中的fs.close方法使用说明
2014/12/17 Javascript
javascript实现的淘宝旅行通用日历组件用法实例
2015/08/03 Javascript
纯前端JavaScript实现Excel IO案例分享
2016/08/26 Javascript
微信JS-SDK自定义分享功能实例详解【分享给朋友/分享到朋友圈】
2016/11/25 Javascript
jQuery实现ajax无刷新分页页码控件
2017/02/28 Javascript
Nodejs之http的表单提交
2017/07/07 NodeJs
JavaScript中递归实现的方法及其区别
2017/09/12 Javascript
layui 富文本图片上传接口与普通按钮 文件上传接口的例子
2019/09/23 Javascript
JS数组Reduce方法功能与用法实例详解
2020/04/29 Javascript
js面向对象方式实现拖拽效果
2021/03/03 Javascript
python读取html中指定元素生成excle文件示例
2014/04/03 Python
Python中使用wxPython开发的一个简易笔记本程序实例
2015/02/08 Python
python通过正则查找微博@(at)用户的方法
2015/03/13 Python
Python正则表达式匹配HTML页面编码
2015/04/08 Python
Python模拟百度自动输入搜索功能的实例
2019/02/14 Python
Pyqt QImage 与 np array 转换方法
2019/06/27 Python
python编程进阶之类和对象用法实例分析
2020/02/21 Python
CSS3 实用技巧:实现黑白图像效果示例代码
2013/07/11 HTML / CSS
浅谈HTML5 defer和async的区别
2016/06/07 HTML / CSS
佳能德国网上商店:Canon德国
2017/03/18 全球购物
No7 Beauty美国官网:英国国民护肤品牌
2019/10/31 全球购物
在对linux系统分区进行格式化时需要对磁盘簇(或i节点密度)的大小进行选择,请说明选择的原则
2012/11/24 面试题
写好自荐信的几个要点
2013/12/26 职场文书
静心口服夜广告词
2014/03/20 职场文书
离婚协议书怎么写(范本参考)
2014/09/30 职场文书
小学老师对学生的评语
2014/12/29 职场文书
成绩单评语
2015/01/04 职场文书
导游词之吉林花园山
2019/10/17 职场文书
Python代码风格与编程习惯重要吗?
2021/06/03 Python
“鬼灭之刃”热度不减,其成功背后的原因是什么?
2022/03/22 日漫