介绍几个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+mysql实现无限级分类 | 树型显示分类关系
Nov 19 PHP
php win下Socket方式发邮件类
Aug 21 PHP
ThinkPHP php 框架学习笔记
Oct 30 PHP
php变量作用域的深入解析
Jun 03 PHP
PHP中的str_repeat函数在JavaScript中的实现
Sep 16 PHP
PHP中常用的转义函数
Feb 28 PHP
PHP 面向对象程序设计(oop)学习笔记 (四) - 异常处理类Exception
Jun 12 PHP
简单的自定义php模板引擎
Aug 26 PHP
PHP使用zlib扩展实现GZIP压缩输出的方法详解
Apr 09 PHP
php中的buffer缓冲区用法分析
May 31 PHP
php实现登录页面的简单实例
Sep 29 PHP
PHP随机生成中文段落示例【测试网站内容时使用】
Apr 26 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
「OVERLORD」动画重要删减!雅儿贝德的背叛?至尊猎杀队结成
2020/04/09 日漫
用php+mysql一个名片库程序
2006/10/09 PHP
PHP多线程编程之管道通信实例分析
2015/03/07 PHP
Hutia 的 JS 代码集
2006/10/24 Javascript
基于jquery实现的上传图片及图片大小验证、图片预览效果代码
2011/04/12 Javascript
js实现拖拽 闭包函数详细介绍
2012/11/25 Javascript
js编码、解码函数介绍及其使用示例
2013/09/05 Javascript
javacript使用break内层跳出外层循环分析
2015/01/12 Javascript
jQuery实现仿QQ空间装扮预览图片的鼠标提示效果代码
2015/10/30 Javascript
jQuery+css3实现转动的正方形效果(附demo源码下载)
2016/01/27 Javascript
JS中使用mailto实现将用户在网页中输入的内容传递到本地邮件客户端
2016/10/08 Javascript
vue插件tab选项卡使用小结
2016/10/27 Javascript
用原生js做单页应用
2017/01/17 Javascript
Vue-Router进阶之滚动行为详解
2017/09/13 Javascript
Vue下的国际化处理方法
2017/12/18 Javascript
基于Vuex无法观察到值变化的解决方法
2018/03/01 Javascript
解决vue-cli输入命令vue ui没效果的问题
2020/11/17 Javascript
Python Tkinter简单布局实例教程
2014/09/03 Python
Python使用scrapy采集数据时为每个请求随机分配user-agent的方法
2015/04/08 Python
python使用PIL缩放网络图片并保存的方法
2015/04/24 Python
Python设计模式之命令模式简单示例
2018/01/10 Python
磁盘垃圾文件清理器python代码实现
2020/08/24 Python
python 猴子补丁(monkey patch)
2019/06/26 Python
python实现桌面气泡提示功能
2019/07/29 Python
基于css3实现漂亮便签样式
2013/03/18 HTML / CSS
澳洲小众品牌的集合网站:BNKR
2018/02/23 全球购物
Fossil美国官网:化石手表、手袋、首饰及配饰
2019/02/17 全球购物
可口可乐唇膏:Lip Smackers
2019/08/27 全球购物
介绍一下Linux文件的记录形式
2013/09/29 面试题
女大学生个人求职信
2013/12/09 职场文书
初中生期末考试的自我评价
2013/12/17 职场文书
十八届三中全会学习方案
2014/02/16 职场文书
公司晚会主持词
2014/03/22 职场文书
《理想的风筝》教学反思
2014/04/11 职场文书
2014年重阳节老干部座谈会局领导发言稿
2014/09/25 职场文书
大学生自我鉴定怎么写
2019/05/07 职场文书