php自定义函数及内部函数----数组处理函数

一、增加元素

(1)array_push() : 函数向第一个参数的数组尾部添加一个或多个元素(入栈),然后返回新数组的长度。

  注释:如果用 array_push() 来给数组增加一个单元,还不如用 $array[] =,因为这样没有调用函数的额外负担。

  注释:如果第一个参数不是数组,array_push() 将发出一条警告。这和 $var[] 的行为不同,后者会新建一个数组。

$a=array("a"=>"xiao","b"=>"lin");
array_push($a,"hello","world");
print_r($a);
//Array ( [a] => xiao [b] => lin [0] => hello [1] => world )

或者这样做:

$a["a"] = "xiao";
$a["b"] = "lin";
$a[] = "hello";
$a[] = "world";
print_r($a);
//Array ( [a] => xiao [b] => lin [0] => hello [1] => world )

(2)array_unshift() : 函数用于向数组插入新元素。新数组的值将被插入到数组的开头。被加上的元素作为一个整体添加,这些元素在数组中的顺序和在参数中的顺序一样。该函数会返回数组中元素的个数。

$a=array(0=>"xiao",1=>"lin");
array_unshift($a,"zi");
print_r($a);//Array ( [0] => zi [1] => xiao [2] => lin )

(3)array_pad() : 函数将指定数量的带有指定值的元素插入到数组中,知道数组的长度达到指定大小为止。

  array_pad(array,size,value)

  注释:如果 size 参数小于原始数组的长度,该函数不会删除任何元素。

  注释:如果 size 参数设置为负数,该函数会在原始数组之前插入新的元素

$a=array("xiao","lin");
print_r(array_pad($a,5,"zi"));
// Array ( [0] => xiao [1] => lin [2] => zi [3] => zi [4] => zi )
$a=array("xiao","lin");
print_r(array_pad($a,-5,"zi"));
// Array ( [0] => zi [1] => zi [2] => zi [3] => xiao [4] => lin )

二、删除元素

(1)array_pop() : 函数删除数组中的最后一个元素。

(2)array_shift(): 函数删除数组中第一个元素,并返回被删除元素的值。

  注释:如果键名是数字的,所有元素都会获得新的键名,从 0 开始,并以 1 递增。

$a=array(0=>"xiao",1=>"lin",2=>"zi");
echo array_shift($a);// xiao
print_r ($a);//Array ( [0] => lin [1] => zi )

三、定位元素

(1)array_keys() :函数返回包含数组中所有键名的一个新数组。

(2)array_values() :函数返回一个包含给定数组中所有键值的数组,但不保留键名,被返回的数组将使用数值键,从 0 开始并以 1 递增。

$a=array("山东"=>"济南","陕西"=>"西安","河南"=>"郑州");
print_r(array_keys($a)); // Array ( [0] => 山东 [1] => 陕西 [2] => 河南 )
print_r(array_values($a));// Array ( [0] => 济南 [1] => 西安 [2] => 郑州 )

(3)in_array() :函数搜索数组中是否存在指定的值。

  in_array(search,array,type)

  注释:如果 search 参数是字符串且 type 参数被设置为 TRUE,则搜索区分大小写。

  如果给定的值 search 存在于数组 array 中则返回 true。如果第三个参数设置为 true,函数只有在元素存在于数组中且数据类型与给定值相同时才返回 true。

  如果没有在数组中找到参数,函数返回 false。

(4)array_search() :函数在数组中搜索某个键值,并返回对应的键名。

四、提取元素

(1)array_diff():函数返回两个数组的差集数组。该数组包括了所有在被比较的数组中,但是不在任何其他参数数组中的键值。在返回的数组中,键名保持不变。

$a1=array("a"=>"xiao","b"=>"lin","c"=>"zi","d"=>"happy");
$a2=array("e"=>"xiao","f"=>"lin","g"=>"happy");
$a3=array("a"=>"xiao","b"=>"lin","h"=>"haha");

$result=array_diff($a1,$a2,$a3);
print_r($result);

(2)array_intersect() :函数用于比较两个(或更多个)数组的键值,并返回交集。

  array_intersect(array1,array2,array3...);

  该函数比较两个(或更多个)数组的键值,并返回交集数组,该数组包括了所有在被比较的数组(array1)中,同时也在任何其他参数数组(array2 或 array3 等等)中的键值。

  注意:只有第一个数组是被比较的数组。返回的也是它的键和值。

$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
$a2=array("e"=>"red","f"=>"black","g"=>"purple");
$a3=array("a"=>"red","b"=>"black","h"=>"yellow");

$result=array_intersect($a1,$a2,$a3);
print_r($result); // Array ( [a] => red )

五、数组排序

(1)sort() :函数对索引数组进行升序排序。

  注释:本函数为数组中的单元赋予新的键名。原有的键名将被删除。

(2)rsort(): 函数对数值数组进行降序排序。

六、其他操作

(1)array_rand() :函数从数组中随机选出一个或多个元素,并返回。

  array_rand(array,number)

  第二个参数用来确定要选出几个元素。如果选出的元素不止一个,则返回包含随机键名的数组,否则返回该元素的键名。

$a=array("a"=>"xiao","b"=>"lin","c"=>"zi");
print_r(array_rand($a,1)); // b
print_r(array_rand($a,2)); // Array ( [0] => a [1] => c )

(2)array_merge():函数把一个或多个数组合并为一个数组。

  注释:如果两个或更多个数组元素有相同的键名,则最后的元素会覆盖其他元素。

  注释:如果仅向 array_merge() 函数输入一个数组,且键名是整数,则该函数将返回带有整数键名的新数组,其键名以 0 开始进行重新索引。

$a1=array("a"=>"xiao","b"=>"lin");
$a2=array("c"=>"zi","b"=>"happy");
print_r(array_merge($a1,$a2)); // Array ( [a] => xiao [b] => happy [c] => zi )

(3)array_merge_recursive() :函数把一个或多个数组合并为一个数组。

  该函数与 array_merge() 函数的区别在于处理两个或更多个数组元素有相同的键名时。array_merge_recursive() 不会进行键名覆盖,而是将多个相同键名的值递归组成一个数组。

$a1=array("a"=>"xiao","b"=>"lin");
$a2=array("c"=>"zi","b"=>"happy");
print_r(array_merge_recursive($a1,$a2)); 
// Array ( [a] => xiao [b] => Array ( [0] => lin [1] => happy ) [c] => zi )

 

posted @ 2018-12-06 17:54  小林子奋斗的点滴  阅读(443)  评论(0编辑  收藏  举报