介绍几个array库的新函数 php

2018-09-07 12:30

阅读:480

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

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

函数名支持版本

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

例子


OK,Letsgo.

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

arrayarray_flip(arraytrans)

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

例:
$a[0]=abc;
$a[1]=def;
Afteranarray_flip()youget:
$a[abc]=0;$a[def]=1;

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

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

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

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

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

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

Seealsoarray_merge_recursive().

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

arrayarray_merge_recursive(arrayarray1,arrayarray2[,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);

//Resultingarraywillbearray(color=>array(favorite=>array(red,green),blue),5,10).


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

Seealsoarray_merge().

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

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

例:
$array1=array(a=>green,red,blue);
$array2=array(b=>green,yellow,red);
$result=array_intersect($array1,$array2);
//Thismakes$resulthavearray(a=>green,red);

Seealsoarray_diff().

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

arrayarray_diff(arrayarray1,arrayarray2[,array...])

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

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

//Thismakes$resulthavearray(blue);

Seealsoarray_intersect().

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

arrayarray_keys(arrayinput[,mixedsearch_value])
arrayarray_values(arrayinput)

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

例:

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

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

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


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

boolarray_multisort(arrayar1[,mixedarg[,mixed...[,array...]]])

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

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

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);

//aftersorting,thefirstarraywillcontain10,100,100,a(itwassortedasstringsinascendingorder),andthesecondonewillcontain1,3,2,1(sortedasnumbers,indescendingorder).

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

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


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

mixedarray_pop(arrayarray)
intarray_push(arrayarray,mixedvar[,mixed...])
mixedarray_shift(arrayarray)
intarray_unshift(arrayarray,mixedvar[,mixed...])

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

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


Example1.Array_pop()example

$stack=array(orange,apple,raspberry);
$fruit=array_pop($stack);
//Afterthis,$stackhasonly2elements:orangeandapple,and$fruithasraspberry.


Example2.Array_push()example

$stack=array(1,2);
array_push($stack,+,3);
//Thisexamplewouldresultin$stackhaving4elements:1,2,+,and3.

Example3.Array_shift()example

$args=array(-v,-f);
$opt=array_shift($args);
//Thiswouldresultin$argshavingoneelement-fleft,and$optbeing-v.


Example4.Array_unshift()example

$queue=array(p1,p3);
array_unshift($queue,p4,p5,p6);
//Thiswouldresultin$queuehaving5elements:p4,p5,p6,p1,andp3.


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

mixedarray_rand(arrayinput[,intnum_req])

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

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

Example1.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)

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

Example1.Array_reverse()example

$input=array(php,4.0,array(green,red));
$result=array_reverse($input);
//Thismakes$resulthavearray(array(green,red),4.0,php).

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

array_slice(PHP4)

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

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

Example1.Array_slice()examples

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

$output=array_slice($input,2);//returnsc,d,ande
$output=array_slice($input,2,-1);//returnsc,d
$output=array_slice($input,-2,1);//returnsd
$output=array_slice($input,0,3);//returnsa,b,andc

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

array_splice(PHP4)

arrayarray_splice(arrayinput,intoffset[,intlength[,arrayreplacement]])

从数组中移去从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]=$yarray_splice($input,$x,1,$y)

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

Example1.Array_splice()examples

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

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

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

arrayarray_unique(arrayarray)

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

Example1.Array_unique()example

$input=array(a=>green,red,b=>green,blue,red);
$result=array_unique($input);
//Thismakes$resulthavearray(a=>green,red,blue);.


评论


亲,登录后才可以留言!