介绍几个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 相关文章推荐
Win2003服务器安全加固设置--进一步提高服务器安全性
May 23 PHP
php下实现伪 url 的超简单方法[转]
Sep 24 PHP
用PHP连接MySQL代码的参数说明
Jun 07 PHP
PHP array_flip() 删除重复数组元素专用函数
May 16 PHP
注意:php5.4删除了session_unregister函数
Aug 05 PHP
ThinkPHP登录功能的实现方法
Aug 20 PHP
php生成不重复随机数、数组的4种方法分享
Mar 30 PHP
CodeIgniter使用smtp服务发送html邮件的方法
Jun 10 PHP
php实现mysql数据库分表分段备份
Jun 18 PHP
使用图灵api创建微信聊天机器人
Jul 23 PHP
php进行ip地址掩码运算处理的方法
Jul 11 PHP
ThinkPHP下表单令牌错误与解决方法分析
May 20 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实现的生成静态HTML速度快类库
2007/03/31 PHP
php session处理的定制
2009/03/16 PHP
php学习之 循环结构实现代码
2011/06/09 PHP
PHP判断浏览器、判断语言代码分享
2015/03/05 PHP
PHP使用Mysqli类库实现完美分页效果的方法
2016/04/07 PHP
微信公众号OAuth2.0网页授权问题浅析
2017/01/21 PHP
JavaScript 开发规范要求(图文并茂)
2010/06/11 Javascript
重写javascript中window.confirm的行为
2012/10/21 Javascript
在Javascript中处理数组之toSource()方法的使用
2015/06/09 Javascript
浅析函数声明和函数表达式——函数声明的声明提前
2016/05/03 Javascript
js日期相关函数dateAdd,dateDiff,dateFormat等介绍
2016/09/24 Javascript
Angularjs单选改为多选的开发过程及问题解析
2017/02/17 Javascript
关于Ajax的原理以及代码封装详解
2017/09/08 Javascript
详解Vue中watch的详细用法
2018/11/28 Javascript
JavaScript键盘事件常见用法实例分析
2019/01/03 Javascript
JavaScript设计模式之代理模式实例分析
2019/01/16 Javascript
Vue路由之JWT身份认证的实现方法
2019/08/26 Javascript
vue 公共列表选择组件,引用Vant-UI的样式方式
2020/11/02 Javascript
解决出现Incorrect integer value: '' for column 'id' at row 1的问题
2017/10/29 Python
Python+matplotlib实现填充螺旋实例
2018/01/15 Python
python实现连续图文识别
2018/12/18 Python
Django 日志配置按日期滚动的方法
2019/01/31 Python
python flask框架实现传数据到js的方法分析
2019/06/11 Python
pyqt5实现绘制ui,列表窗口,滚动窗口显示图片的方法
2019/06/20 Python
Pandas中resample方法详解
2019/07/02 Python
python多进程(加入进程池)操作常见案例
2019/10/21 Python
python使用beautifulsoup4爬取酷狗音乐代码实例
2019/12/04 Python
matplotlib 画双轴子图无法显示x轴的解决方法
2020/07/27 Python
一款基于css3的列表toggle特效实例教程
2015/01/04 HTML / CSS
详解CSS3中常用的样式【基本文本和字体样式】
2020/10/20 HTML / CSS
如何唤起类中的一个方法
2013/11/29 面试题
自主招生自荐书
2013/11/29 职场文书
数控专业大学毕业生职业规划范文
2014/02/06 职场文书
一分钟演讲稿
2014/04/30 职场文书
酒店周年庆活动方案
2014/08/21 职场文书
2014迎国庆演讲稿
2014/09/19 职场文书