天天看点

PHP中的数组函数

PHP中的数组函数

PHP有74个和数组处理相关的函数,先给出一个总表:

array_change_key_case — 转变数组中所有键值的大小写形式

array_chunk — 将一个数组拆成多个小单元

array_combine — 用一个数组的值作为其键名,另一个数组的值作为其值的方法来创建数组

array_count_values — 统计数组中的值出现的次数

array_diff_assoc — 根据值和键值计算若干个数组相对于第一个数组参数的差集

array_diff_key — 根据键值计算若干个数组相对于第一个数组参数的差集

array_diff_uassoc –根据值和键值计算若干个数组相对于第一个数组参数的差集,可使用回调函数对键值进行比较

array_diff_ukey — 根据键值计算若干个数组相对于第一个数组参数的差集,可使用回调函数比较键名

array_diff — 根据值来计算若干个数组相对于第一个数组参数的差集

array_fill — 用给定的值填充数组

array_filter — 使用回调函数对数组进行过滤操作

array_flip — 交换数组中的键和值

array_intersect_assoc — 根据值和键值来计算数组的交集

array_intersect_key — 根据键值比较计算数组的交集

array_intersect_uassoc — 根据值和键值来计算数组的交集,可使用回调函数对键值进行比较

array_intersect_ukey — 根据键值比较计算数组的交集,可使用回调函数比较键名

array_intersect — 根据值来计算数组的交集

array_key_exists — 检查给定的键名是否存在于数组中

array_keys — 返回数组中所有的键名

array_map — 对数组中的每个元素应用回调函数后返回结果

array_merge_recursive — 用来处理多维数组的合并

array_merge — 重排单个数组的键值或者合并两个数组

array_multisort — 对多个数组进行排序,或者对多维数组进行排序

array_pad — 用值将数组填补到指定长度

array_pop — 将数组的最后一个单元弹出

array_product — 得出数组所有单元值的乘积

array_push — 将一个或多个单元添加到数组的末尾

array_rand — 从数组中随机取出一个或多个单元的键名

array_reduce — 对数组中的每个元素应用一个回调函数

array_reverse — 返回一个和原来数组相反的数组

array_search — 在数组中搜索给定的值,如果成功则返回相应的键名

array_shift — 将数组的第一个单元移出并作为结果返回

array_slice — 截取出数组中的一段

array_splice — 将一个数组中的部分截取并替换

array_sum — 得出数组所有值的和

array_udiff_assoc — 根据值和键值来计算数组的交集,可使用回调函数比较值

array_udiff_uassoc — 根据值和键值来计算数组的交集,可使用回调函数比较值

array_udiff — 根据值来计算若干个数组相对于第一个数组参数的差集,可使用回调函数比较值

array_uintersect_assoc — 根据值和键值来计算数组的交集,可使用回调函数对值进行比较

array_uintersect_uassoc — 根据值和键值来计算数组的交集,可使用回调函数对值和键值进行比较

array_uintersect — 根据值来计算数组的交集,可使用回调函数比较值

array_unique — 移除数组中重复的值

array_unshift — 将传入的单元插入到数组的开头

array_values — 返回数组中所有的值

array_walk_recursive — 对数组中的每个元素递归的应用一个回调函数

array_walk — 对数组中的每个元素应用一个回调函数

array — 新建一个数组

arsort — 对数组进行反向,保留键值的排序

asort — 对数组进行保留键值的排序

compact — 将变量转变为数组

count — 计算数组的个数

current — 返回数组的当前单元

each — 返回数组当前指针所在单元的键值和值,并将指针指向下一个单元

end — 将指针指向数组的最后一个单元

extract — 将一个数组的键值作为变量名,将数组的值作为变量的值进行批量赋值

in_array — 检查数组中是否存在某个值

key — 返回当前指针所在数组单元的键名

krsort — 将数组按键名进行反向排序

ksort — 将数组按键名进行排序

list — 将数组的值赋给一些变量

natcasesort — 使用“自然排序”法对数组排序,比较时不区分大小写

natsort — 使用“自然排序”法对数组排序

next — 将指针指向数组的下一个单元

pos — 返回数组的当前单元,是current() 的别称

prev — 将指针指向数组的上一个单元

range — 建立一个包含指定范围单元的数组

reset — 将指针指向数组的第一个单元

rsort — 对数组进行反向排序

shuffle — 将数组打乱,并重建键名

sizeof — 计算数组的个数,作用和count()函数完全相同

sort — 对数组进行排序

uasort — 使用回调函数对数组进行保留键值的排序

uksort — 使用回调函数对数组按键名进行排序

usort — 使用回调函数对数组进行排序

array ()函数的作用是创建一个数组。如果省略了索引,会自动产生从 0 开始的整数索引。如果索引是整数,则下一个产生的索引将是目前最大的整数索引 + 1。注意如果定义了两个完全一样的索引,则后面一个会覆盖前一个。array()函数的最后一项后面可以添加一个“,”,但不起任何作用。

<?php

$array = array(1, 1, 1, 1, 1, 8 => 1, 4 => 1, 19, 3 => 13,);

print_r($array);

?>

range ()函数的作用是建立一个包含指定范围单元的数组,range()函数的第一个参数表示开始单元的值,第二个参数表示最后一个单元的值,第三个参数表示值的跨度,第三个参数的默认值为1。第一第二个参数如果输入了字符串,将会截取第一个字母,建立字母为值的数组。

<?php

$number = range(100, 0, 20);

print_r($number);

$number = range("g", "a", 2);

print_r($number);

?>

compact()函数可以将变量转变为数组,$key为变量的名称,$value为变量的值。compact()函数的操作可以通过数组递归地完成。

<?php

$name = "Bom";

$result = compact("name");

print_r($result); // 显示 Array ( [name] => Bom )

$name = "Bom";

$age = 25;

$city = "shanghai";

$result = compact(array("name", "age", "city"));

print_r($result);

?>

extract ()函数的作用是将一个数组的键值作为变量名,将数组的值作为变量的值进行批量赋值,extract()函数的第二个参数有8个常量参数可以选择:EXTR_OVERWRITE:如果有冲突,覆盖已有的变量;EXTR_SKIP:如果有冲突,不覆盖已有的变量; EXTR_PREFIX_SAME:如果有冲突,在变量名前加上第三个参数作为前缀;EXTR_PREFIX_ALL:给所有变量名前加上第三个参数作为前缀;EXTR_PREFIX_INVALID:仅在非法/数字的变量名前加上第三个参数作为前缀;EXTR_IF_EXISTS:仅在当前已有同名变量时,覆盖它们的值;EXTR_PREFIX_IF_EXISTS:仅在当前已有同名变量时,建立第三个参数作为前缀;EXTR_REFS:将变量作为引用提取。这有力地表明了导入的变量仍然引用了 var_array 参数的值。可以单独使用这个标志或者在 extract_type 中用 OR 与其它任何标志结合使用。在需要的情况下,会使用第三个参数作为新变量名的前缀。

<?php

$size = "large";

$var_array = array("color" => "blue",

                   "size" => "medium",

                   "shape" => "sphere");

extract($var_array, EXTR_PREFIX_SAME, "wddx");

echo "$color, $size, $shape, $wddx_size";

// 显示 blue, large, sphere, medium

?>

array_combine()函数的作用是用一个数组的值作为其键名,另一个数组的值作为其值的方法来创建数组。

<?php

$a = array('green', 'red', 'yellow');

$b = array('avocado', 'apple', 'banana');

$c = array_combine($a, $b);

print_r($c);

?>

array_merge ()函数的作用是重排单个数组的键值或者合并两个数组。如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引,字符键值不会受影响。如果有两个以上的参数,则进行数组合并的操作,如果数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值,如果是相同的数字键名,后面的值将会附加到原来的值后面。

<?php

$a = array(4=>'green', 6=>'red', 'fruit'=>'yellow');

$a = array_merge($a);

print_r($a)

$a = array(4=>'green', 6=>'red', 'fruit'=>'yellow');

$b = array(4=>'greens', 6=>'reds', 'fruit'=>'yellows');

$a = array_merge($a,$b);

print_r($a)

?>

array_merge_recursive()函数的处理方式和array_merge()函数类似,但是array_merge_recursive()函数可以用来处理多维数组的合并。

<?php

$ar1 = array("color" => array("favorite" => "red"), 5);

$ar2 = array(10, "color" => array("favorite" => "green", "blue"));

$result = array_merge_recursive($ar1, $ar2);

print_r($result);

?>

count()函数的作用是计算数组的个数。count()函数的第二个参数如果被设置为常量COUNT_RECURSIVE,将会递归地去计算数组的个数。sizeof()函数的作用和count()函数的作用完全相同

<?php

$food = array (

    'fruits' => array ('orange','banana','apple'),

    'veggie' => array ('carrot','collard','pea')

);

echo count($food, COUNT_RECURSIVE); // 显示 8

echo count($food); // 显示 2

?>

array_count_values()函数的作用统计数组中的值出现的次数。

<?php

$array = array(1, "hello", 1, "world", "hello");

print_r(array_count_values ($array));

?>

array_values()函数的作用是返回所有元素的值。

<?php

$array = array("size" => "XL", "color" => "gold");

print_r(array_values($array));

?>

array_keys()函数的作用是返回数组的键名,如果设置了第二个参数,则可以返回指定值的单元的键值,第三个参数设置为true是,可以让第二个参数进行“===”的比较。

<?php

$array = array("blue", "red", "green", "blue", "blue");

print_r(array_keys($array, "blue"));

?>

array_key_exists()函数的作用是检查给定的键名是否存在于数组中。

<?php

$ array = array('first' => 1, 'second' => 4);

echo array_key_exists('first', $ array); // 显示 1

?>

下面这个例子说明array_key_exists()函数和isset()函数在检测时候的微小区别,就是在对null的处理上。

<?php

$search_array = array('first' => null, 'second' => 4);

isset($search_array['first']); // 返回false

array_key_exists('first', $search_array); // 返回true

?>

in_array()函数的作用是检查数组中是否存在某个值,比较同时检查键值和值。比较是区分大小写的。第三个参数设置为true时,匹配将会通过“===”来进行。

<?php

$a = array('o', array('c' => 'p', 'h'), array('p', 'r'));

echo in_array(array('c' => 'p', 'h'), $a); // 返回true

in_array(array('f', 'i'), $a); // 返回false

in_array('o', $a); // 返回true

?>

array_sum()函数的作用是得出数组所有单元值的和,字符串单元会被自动转换成0。

<?php

$b = array("a" => 1.2, "b" => 2.3, "c" => 3.4, "d" => "string");

echo array_sum($b); //显示 6.9

?>

array_product()函数的作用是得出数组所有单元值的乘积,字符串单元会被自动转换成0。

<?php

$a = array(2, 4, 6, 8);

echo array_product($a); //显示 384

?>

array_shift()函数的作用是将数组的第一个单元移出并作为结果返回,将数组的长度减一并将所有其它单元向前移动一位。所有的数字键名将改为从零开始计数,文字键名将不变。

<?php

$stack = array(7 => "orange", 8 => "banana", 9 => "apple");

$fruit = array_shift($stack);

print_r($stack);

echo $fruit; // 显示 orange

?>

array_unshift()函数的作用是将传入的单元插入到数组的开头。注意单元是作为整体被插入的,因此传入单元将保持同样的顺序。所有的数值键名将修改为从零开始重新计数,所有的文字键名保持不变。

<?php

$queue = array("orange", "banana");

array_unshift($queue, "apple", "raspberry");

print_r($queue);

?>

array_pop()函数的作用是将数组的最后一个单元弹出,并返回被弹出数组元素的值。

<?php

$queue = array(7 => "orange", 8 => "banana", 9 => "apple");

$fruit = array_pop($queue);

print_r($queue);

echo $fruit; // 显示 apple

?>

array_push()函数的作用是将一个或多个单元添加到数组的末尾,并返回数组新的单元总数

<?php

$stack = array("orange", "banana");

$fruit = array_push($stack, "apple", "raspberry");

print_r($stack);

echo $fruit; // 显示 4

?>

array_slice ()函数的作用是截取出数组中的一段,第二个参数表示从第几个元素开始截取,参数小于0时从后向前计算,第三个参数为正数时,表示截取的长度,为负时,表示截取到末尾的第几个位置,第四个参数设置为true时,函数将保留键值,默认将会重置所有的数字键值。

<?php

$queue = array(7 => "orange", 8 => "banana", 9 => "apple", 10 => "pear");

$fruit = array_slice($queue,1,-1,true);

print_r($fruit);

?>

array_splice()函数的作用是将一个数组中的部分截取并替换。第二个参数表示截取的位置,小于0是表示从后往前计数,第三个参数为正时,表示截取的长度,为负时表示从后往前截取到的位置,第四个参数表示从第二个参数表示的位置开始插入内容的数组。

<?php

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

array_splice($input, 1, -1);

print_r($input); // 显示 array("red", "yellow")

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

array_splice($input, 1, count($input), "orange");

print_r($input); // 显示 array("red", "orange")

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

array_splice($input, 3, 0, "purple");

print_r($input); // 显示 array("red", "green", "blue", "purple", "yellow")

?>

shuffle()函数的作用是将数组打乱,并重建键名。

<?php

$input = array("Neok" => "Neo","Morpheusk" => "Morpheus", "Trinityk" => "Trinity");

$rand_keys = shuffle($input);

print_r($input);

?>

array_rand()函数的作用是从数组中随机取出一个或多个单元的键名。第二个参数表示取出键的数量,省略则默认为1。

<?php

$input = array("Neok" => "Neo","Morpheusk" => "Morpheus", "Trinityk" => "Trinity");

$rand_keys = array_rand($input,2);

print_r($rand_keys); // 显示类似Array ( [0] => Neok [1] => Morpheusk )

?>

array_reverse()函数返回一个和原来数组相反的数组,第二个参数如果设置为TRUE则保留原来的键名。

<?php

$input = array("Neok" => "Neo","Morpheusk" => "Morpheus", "Trinityk" => "Trinity");

$result = array_reverse($input);

print_r($result). "\n";

?>

array_flip()函数的作用是交换数组中的键和值,函数要求值能够成为合法的键名,如果同一个值出现了多次,则最后一个键名将作为它的值,其它的将全部丢弃。

<?php

$trans = array("a" => 1, "b" => 1, "c" => 2);

$trans = array_flip($trans);

print_r($trans); // 显示 Array ( [1] => b [2] => c )

?>

array_search()函数的作用是在数组中搜索给定的值,如果成功则返回相应的键名。第三个参数设置为true的时候将使用“===”进行比较,如果同一个值出现多次,则返回第一个匹配的键值。

<?php

$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red');

echo $key = array_search('green', $array); // 显示 2;

echo $key = array_search('red', $array);   // 显示 1;

?>

range()函数的作用是建立一个包含指定范围单元的数组,取字符值时候自动截取一位。第三个参数表示数组之间的间距,省略时默认为1。

<?php

print_r(range('1', '5', '2'));

print_r(range('c', 'a'));

?>

array_fill()函数的作用是用给定的值填充数组,第一个参数表示开始的键值,第二个参数表示数组的长度,第三个参数表示数组的值。

<?php

$a = array_fill(-1, 2, array ('first', 'key' => 'second'));

print_r($a);

?>

array_pad()函数的作用是用值将数组填补到指定长度,如果第二个参数为正,则数组被填补到右侧,如果为负则从左侧开始填补。原数组里面的数字键值完全重置,字符串键值将保留。

<?php

$input = array(12, 10, 9);

$result = array_pad($input, -7, -1);

print_r($result);

?>

array_unique()函数的作用是移除数组中重复的值,保留首个出现的值。

<?php

$input = array("a" => "green", "red", "b" => "green", "blue", "red");

$result = array_unique($input);

print_r($result);

?>