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);
/* 显示
Array
(
    [0] => 1
    [1] => 1
    [2] => 1
    [3] => 13
    [4] => 1
    [8] => 1
    [9] => 19
)
*/
?>
range ()函数的作用是建立一个包含指定范围单元的数组,range()函数的第一个参数表示开始单元的值,第二个参数表示最后一个单元的值,第三个参数表示值的跨度,第三个参数的默认值为1。第一第二个参数如果输入了字符串,将会截取第一个字母,建立字母为值的数组。


<?php
$number = range(100, 0, 20);
print_r($number);
/* 显示
Array
(
    [0] => 100
    [1] => 80
    [2] => 60
    [3] => 40
    [4] => 20
    [5] => 0
)
*/
$number = range("g", "a", 2);
print_r($number);
/* 显示
Array
(
    [0] => g
    [1] => e
    [2] => c
    [3] => a
)
*/
?>
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);
/* 显示
Array
(
    [name] => Bom
    [age] => 25
    [city] => shanghai
)
*/
?>
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
(
    [green] => avocado
    [red]    => apple
    [yellow] => banana
)
*/
?>
array_merge ()函数的作用是重排单个数组的键值或者合并两个数组。如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引,字符键值不会受影响。如果有两个以上的参数,则进行数组合并的操作,如果数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值,如果是相同的数字键名,后面的值将会附加到原来的值后面。


<?php
$a = array(4=>'green', 6=>'red', 'fruit'=>'yellow');
$a = array_merge($a);
print_r($a)
/* 显示
Array
(
    [0] => green
    [1] => red
    [fruit] => yellow
)
*/


$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
(
    [0] => green
    [1] => red
    [fruit] => yellows
    [2] => greens
    [3] => reds
)
*/
?>
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);
/* 显示
Array
(
    [color] => Array
        (
            [favorite] => Array
                (
                    [0] => red
                    [1] => green
                )
            [0] => blue
        )
    [0] => 5
    [1] => 10
)
*/
?>
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
(
    [1] => 2
    [hello] => 2
    [world] => 1
)
*/
?>
array_values()函数的作用是返回所有元素的值。


<?php
$array = array("size" => "XL", "color" => "gold");
print_r(array_values($array));
/* 显示
Array
(
    [0] => XL
    [1] => gold
)
*/
?>
array_keys()函数的作用是返回数组的键名,如果设置了第二个参数,则可以返回指定值的单元的键值,第三个参数设置为true是,可以让第二个参数进行“===”的比较。


<?php
$array = array("blue", "red", "green", "blue", "blue");
print_r(array_keys($array, "blue"));
/* 显示
Array
(
    [0] => 0
    [1] => 3
    [2] => 4
)
*/
?>
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);
/* 显示
Array
(
    [0] => banana
    [1] => apple
)
*/
echo $fruit; // 显示 orange
?>
array_unshift()函数的作用是将传入的单元插入到数组的开头。注意单元是作为整体被插入的,因此传入单元将保持同样的顺序。所有的数值键名将修改为从零开始重新计数,所有的文字键名保持不变。


<?php
$queue = array("orange", "banana");
array_unshift($queue, "apple", "raspberry");
print_r($queue);
/* 显示
Array
(
    [0] => apple
    [1] => raspberry
    [2] => orange
    [3] => banana
)
*/
?>
array_pop()函数的作用是将数组的最后一个单元弹出,并返回被弹出数组元素的值。


<?php
$queue = array(7 => "orange", 8 => "banana", 9 => "apple");
$fruit = array_pop($queue);
print_r($queue);
/* 显示
Array
(
    [7] => orange
    [8] => banana
)
*/
echo $fruit; // 显示 apple
?>
array_push()函数的作用是将一个或多个单元添加到数组的末尾,并返回数组新的单元总数


<?php
$stack = array("orange", "banana");
$fruit = array_push($stack, "apple", "raspberry");
print_r($stack);
/* 显示
Array
(
    [0] => orange
    [1] => banana
    [2] => apple
    [3] => raspberry
)
*/
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
(
    [8] => banana
    [9] => apple
)
*/
?>
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
(
    [0] => Trinity
    [1] => Neo
    [2] => Morpheus
)
*/
?>
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
(
    [Trinityk] => Trinity
    [Morpheusk] => Morpheus
    [Neok] => Neo
)
*/
?>
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'));
/* 显示
Array
(
    [0] => 1
    [1] => 3
    [2] => 5
)
*/
print_r(range('c', 'a'));
/* 显示
Array
(
    [0] => c
    [1] => b
    [2] => a
)
*/
?>
array_fill()函数的作用是用给定的值填充数组,第一个参数表示开始的键值,第二个参数表示数组的长度,第三个参数表示数组的值。


<?php
$a = array_fill(-1, 2, array ('first', 'key' => 'second'));
print_r($a);
/* 显示
Array
(
    [-1] => Array
        (
            [0] => first
            [key] => second
        )
    [0] => Array
        (
            [0] => first
            [key] => second
        )
)
*/
?>
array_pad()函数的作用是用值将数组填补到指定长度,如果第二个参数为正,则数组被填补到右侧,如果为负则从左侧开始填补。原数组里面的数字键值完全重置,字符串键值将保留。


<?php
$input = array(12, 10, 9);
$result = array_pad($input, -7, -1);
print_r($result);
/* 显示
Array
(
    [0] => -1
    [1] => -1
    [2] => -1
    [3] => -1
    [4] => 12
    [5] => 10
    [6] => 9
)
*/
?>
array_unique()函数的作用是移除数组中重复的值,保留首个出现的值。


<?php
$input = array("a" => "green", "red", "b" => "green", "blue", "red");
$result = array_unique($input);
print_r($result);
/* 显示
Array
(
    [a] => green
    [0] => red
    [1] => blue
)
*/
?>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值