介绍几个array库的新函数
我们手头的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]].\" \"; print $input[$rand_keys[1]].\" \"; //************************************** 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\";
|