介绍几个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新手上路(十三)
Oct 09 PHP
第十节--抽象方法和抽象类
Nov 16 PHP
php读取xml实例代码
Jan 28 PHP
php Xdebug 调试扩展的安装与使用.
Mar 13 PHP
php中日期加减法运算实现代码
Dec 08 PHP
解析php二分法查找数组是否包含某一元素
May 23 PHP
thinkphp实现数组分页示例
Apr 13 PHP
thinkphp实现上一篇与下一篇的方法
Dec 08 PHP
Yii视图操作之自定义分页实现方法
Jul 14 PHP
php对象工厂类完整示例
Aug 09 PHP
php学习笔记之字符串常见操作总结
Jul 16 PHP
php报错502badgateway解决方法
Oct 11 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数组函数序列之sort() 对数组的元素值进行升序排序
2011/11/02 PHP
php取得字符串首字母的方法
2015/03/25 PHP
帝国cms常用标签汇总
2015/07/06 PHP
实例简介PHP的一些高级面向对象编程的特性
2015/11/27 PHP
php使用FFmpeg接口获取视频的播放时长、码率、缩略图以及创建时间
2016/11/07 PHP
tp5框架基于Ajax实现列表无刷新排序功能示例
2020/02/10 PHP
javascript 二维数组的实现与应用
2010/03/16 Javascript
js实现网页自动刷新可制作节日倒计时效果
2014/05/27 Javascript
Javascript Object 对象学习笔记
2014/12/17 Javascript
jQuery实现的手机发送验证码倒计时效果代码分享
2015/08/24 Javascript
实用jquery操作表单元素的简单代码
2016/07/04 Javascript
AngularJS基础 ng-value 指令简单示例
2016/08/03 Javascript
angular-tree-component的使用详解
2018/07/30 Javascript
vue使用echarts画组织结构图
2021/02/06 Vue.js
Python实现处理管道的方法
2015/06/04 Python
python pandas 对时间序列文件处理的实例
2018/06/22 Python
Python交互环境下实现输入代码
2018/06/22 Python
python版本单链表实现代码
2018/09/28 Python
Django框架的中的setting.py文件说明详解
2018/10/15 Python
Python设计模式之建造者模式实例详解
2019/01/17 Python
pyqt5 使用label控件实时显示时间的实例
2019/06/14 Python
详解如何从TensorFlow的mnist数据集导出手写体数字图片
2019/08/05 Python
python主线程与子线程的结束顺序实例解析
2019/12/17 Python
Python实现栈的方法详解【基于数组和单链表两种方法】
2020/02/22 Python
如何在django中实现分页功能
2020/04/22 Python
.NET初级开发工程师面试题(包括Javascript)
2012/08/22 面试题
2014年幼儿园植树节活动方案
2014/03/02 职场文书
劳动工资科岗位职责范本
2014/03/02 职场文书
网络技术专业求职信
2014/05/02 职场文书
2014年化妆品销售工作总结
2014/12/01 职场文书
博士生专家推荐信
2015/03/25 职场文书
缅怀先烈主题班会
2015/08/14 职场文书
2019通用版劳动合同范本!
2019/07/11 职场文书
使用tensorflow 实现反向传播求导
2021/05/26 Python
详解Vue中$props、$attrs和$listeners的使用方法
2022/02/18 Vue.js
剑指Offer之Java算法习题精讲二叉树专项训练
2022/03/21 Java/Android