php中的数组函数学习记录2

原创
2016/03/23 23:21
阅读数 121

1、检查给定的键名或索引是否存在于数组中——array_key_exists

用法:array_key_exists($key(mixed),$input(array))返回TRUE和FALSE

$input_array=array("1"=>"java","op"=>"R","act"=>"python","php","redis");
$array=array("sd","wd","gh");
var_dump(array_key_exists(1,$array));
var_dump(array_key_exists("op",$input_array));

结果:bool(true)   bool(true)

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

用法:array_keys($input(array)) 返回数组中的键名

$input_array=array("1"=>"java","op"=>"R","act"=>"python","php","redis");
$array=array("sd","wd","gh");
var_dump(array_keys($array));
var_dump(array_keys($input_array));

结果:array(3) { [0]=> int(0) [1]=> int(1) [2]=> int(2) }

array(5) { [0]=> int(1) [1]=> string(2) "op" [2]=> string(3) "act" [3]=> int(2) [4]=> int(3) }

3、将回调函数作用到给定数组的单元上 array_map

用法:array_map(function,array1(array),array2...)感觉这个和过滤函数array_filter理解起来有点类似,array_map可以理解成是一个加工函数,加工方法自己写。

function cube($n){
   return($n * $n * $n);
}
$a = array(1, 2, 3, 4, 5);
var_dump(array_map("cube", $a));

结果:array(5){ [0]=> int(1) [1]=> int(8) [2]=> int(27) [3]=> int(64) [4]=> int(125) }

4、合并一个或多个数组—array_merge(就是求并集)

语法:将一个数组中的值附加在另一个数组后面,如果是数字索引,键名会以连续方式重新索引

$input_array=array("1"=>"java","op"=>"R","act"=>"python","php","redis");
$array=array("sd","wd","gh");
var_dump(array_merge($input_array,$array));

结果:array(8) {[0]=> string(4) "java" ["op"]=> string(1) "R" ["act"]=> string(6) "python" [1]=> string(3) "php" [2]=> string(5) "redis" [3]=> string(2) "sd" [4]=> string(2) "wd" [5]=> string(2) "gh" }

重新索引后键值java的键名由1变成了0

5、递归地合并一个或多个数组——array_merge_recursive

用法:和array_merge一样,只是array_merge是求并集,而array_merge_recursive是实实在在的1+1=2,键值重复不会覆盖,键名重复会自动的合并

$ar1 = array("color" => array("favorite" => "red"), 5,10);
$ar2 = array(10, "color" => array("favorite" => "green", "blue"));
var_dump(array_merge_recursive($ar1, $ar2));

结果:array(4) { ["color"]=> array(2) { ["favorite"]=> array(2) { [0]=> string(3) "red" [1]=> string(5) "green" } [0]=> string(4) "blue" } [0]=> int(5) [1]=> int(10) [2]=> int(10) }

6、对多个数组或多维数组进行排序 -array_multisort

用法:array_multisort(array1,array2...),成功时返回 TRUE, 或者在失败时返回 FALSE.

$ar1 = array("10", 101, 100, "a");
$ar2 = array(1, 3, "2", 1);
array_multisort($ar1, $ar2);
var_dump($ar1);
var_dump($ar2);

结果:

array(4){ [0]=> string(2) "10" [1]=> string(1) "a" [2]=> int(100) [3]=> int(101) } array(4) { [0]=> int(1) [1]=> int(1) [2]=> string(1) "2" [3]=> int(3) }

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

用法:array_pad($input(array),$size(int),mixed) 返回填充的结果

$array1=array(10,20,30);
$array2=array('java'=>array('redis','mysql'));
var_dump(array_pad($array1,6,'40'));
var_dump(array_pad($array2,4,'shell'));

结果:

array(6) { [0]=> int(10) [1]=> int(20) [2]=> int(30) [3]=> string(2) "40" [4]=> string(2) "40" [5]=> string(2) "40" }

array(4) { ["java"]=> array(2) { [0]=> string(5) "redis" [1]=> string(5) "mysql" } [0]=> string(5) "shell" [1]=> string(5) "shell" [2]=> string(5) "shell" }

8、将数组最后一个单元弹出(出栈)——array_pop

用法:array_pop($input(array)) 返回数组的最后一个单元,如果 array 为空(或者不是数组)将返回 NULL

$array1=array(10,20,30);
$array2=array();
var_dump(array_pop($array1));
var_dump(count($array1));
var_dump(array_pop($array2));

结果:int(30)  int(2)(数组长度减1)     NULL

9、计算数组中所有值的乘积——array_product

用法:array_product($array),(要求数组中都是数字)

$array1=array(10,20,30);
$array2=array(1,'er');
$array3=array(10,20,30=>20);
var_dump(array_product($array1));
var_dump(array_product($array2));
var_dump(array_product($array3));

结果:int(6000) int(0) int(4000)

10、将一个或多个单元压入数组的末尾(入栈)——array_push

用法:array_push($array,mixed.....)这个是和array_pop出栈相对应的逐个追加到尾部,返回数组的个数

$array1=array(10,20,30);
var_dump(array_push($array1,'erer','weert'));
var_dump($array1);

结果:int(5)     array(5) { [0]=> int(10) [1]=> int(20) [2]=> int(30) [3]=> string(4) "erer" [4]=> string(5) "weert" }

11、从数组中随机取出一个或多个单元——array_rand

用法:array_rand($array,$num_rep(int)) 随机从数组中取出多个单元(返回的是键名)

$array1=array(10,20,30,40,50,60);
var_dump(array_rand($array1,3));

结果:array(3) { [0]=> int(0) [1]=> int(1) [2]=> int(4)}

12、用回调函数迭代地将数组简化为单一的值——array_reduce

用法:array_reduce($input(array),function,int),将回调函数 function 迭代地作用到 input 数组中的每一个单元中,从而将数组简化为单一的值。如果指定了可选参数 initial,该参数将被当成是数组中的第一个值来处理,或者如果数组为空的话就作为最终返回值

function rsum($v, $w){
   $v += $w;
   return $v;}
function rmul($v, $w){
   $v *= $w;
   return $v;}
$a = array(1, 2, 3, 4, 5);
$x = array();
var_dump(array_reduce($a, "rsum"));
var_dump(array_reduce($a, "rmul", 10));
var_dump(\array_reduce($x, "rsum", 1));

结果:int(15) int(1200) int(1)

13、使用传递的数组递归替换第一个数组的元素——array_replace_recursive

用法:array_replace_recursive(array1,array2,array3....)使用后面数组元素的值替换第一个数组 array 的值。如果一个键存在于第一个数组同时也存在于第二个数组,它的值将被第二个数组中的值替换。如果一个键存在于第二个数组,但是不存在于第一个数组,则会在第一个数组中创建这个元素。如果一个键仅存在于第一个数组,它将保持不变。如果传递了多个替换数组,它们将被按顺序依次处理,后面的数组将覆盖之前的值。

14、使用传递的数组替换第一个数组的元素——array_replace

用法:array_replace(array1,array2,......)函数使用后面数组元素的值替换第一个 array 数组的值。如果一个键存在于第一个数组同时也存在于第二个数组,它的值将被第二个数组中的值替换。如果一个键存在于第二个数组,但是不存在于第一个数组,则会在第一个数组中创建这个元素。如果一个键仅存在于第一个数组,它将保持不变。如果传递了多个替换数组,它们将被按顺序依次处理,后面的数组将覆盖之前的值。

$base = array('citrus' => array( "orange") , 'berries' => array("blackberry", "raspberry"), );
$replacements = array('citrus' => array('pineapple'), 'berries' => array('blueberry'));
$basket = array_replace_recursive($base, $replacements);
print_r($basket);
$basket = array_replace($base, $replacements);
print_r($basket);

结果:Array ( [citrus] => Array ( [0] => pineapple ) [berries] => Array ( [0] => blueberry [1] => raspberry ) )

Array([citrus] => Array ( [0] => pineapple ) [berries] => Array ( [0] => blueberry ) )

15、返回一个单元顺序相反的数组——array_reverse

用法:array_reverse($array,<参数>)参数TRUE为保留原来的键名

$input  = array("php", 4.0, array("green", "red"),'a'=>'b');
var_dump(array_reverse($input));
var_dump(array_reverse($input, TRUE));

结果:array(4) { ["a"]=> string(1) "b" [0]=> array(2) { [0]=> string(5) "green" [1]=> string(3) "red" } [1]=> float(4) [2]=> string(3) "php" }

array(4) { ["a"]=> string(1) "b" [2]=> array(2) { [0]=> string(5) "green" [1]=> string(3) "red" } [1]=> float(4) [0]=> string(3) "php" }

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

用法:array_search(mixed,$array)

$input  = array(1=>"php", 2=>'java',3=>'mysql','a'=>'b');
var_dump(array_search('php',$input));
var_dump(array_search('b',$input));

结果:int(1)  string(1) "a"

17、将数组开头的单元移出数组——array_shift      作用类似于指针

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

$input  = array(1=>"php", 2=>'java',3=>'mysql','a'=>'b');
var_dump(array_shift($input));
var_dump($input);

结果:string(3) "php"

array(3) { [0]=> string(4) "java" [1]=> string(5) "mysql" ["a"]=> string(1) "b" }

18、从数组中取出一段——array_slice

用法:array_slice(array,offset(int),length(int),<TRUE>),如果加上参数TRUE不会重制数组的键

$input = array("a", "b", "c", "d", "e");
print_r(array_slice($input, 2, -1));
print_r(array_slice($input, 2, -1, true));

结果:Array ( [0] => c [1] => d ) Array ( [2] => c [3] => d )

19、把数组中的一部分去掉并用其它值取代 ——array_splice

array_splice($input(array),$offset(int),$length(int),$replace(array))

input 数组中由 offsetlength 指定的单元去掉,如果提供了 replacement 参数,则用 replacement 数组中的单元取代。返回一个包含有被移除单元的数组。注意 input 中的数字键名不被保留。如果 offset 为正,则从 input 数组中该值指定的偏移量开始移除。如果 offset 为负,则从 input 末尾倒数该值指定的偏移量开始移除。

如果省略 length,则移除数组中从 offset 到结尾的所有部分。如果指定了 length 并且为正值,则移除这么多单元。如果指定了 length 并且为负值,则移除从 offset 到数组末尾倒数 length 为止中间所有的单元。小窍门:当给出了 replacement 时要移除从 offset 到数组末尾所有单元时,用 count($input) 作为 length

如果给出了 replacement 数组,则被移除的单元被此数组中的单元替代。如果 offsetlength 的组合结果是不会移除任何值,则 replacement 数组中的单元将被插入到 offset 指定的位置。注意替换数组中的键名不保留。如果用来替换的值只是一个单元,那么不需要给它加上 array(),除非该单元本身就是一个数组。

<?php
$input1 = array("red", "green", "blue", "yellow");
array_splice($input1, 2);
var_dump($input1);
$input2 = array("red", "green", "blue", "yellow");
array_splice($input2, 1, -1);
var_dump($input2);
$input3 = array("red", "green", "blue", "yellow");
array_splice($input3, 1, count($input3), "orange");
var_dump($input3);
$input4 = array("red", "green", "blue", "yellow");
array_splice($input4, -1, 1, array("black", "maroon"));
var_dump($input4);
$input5 = array("red", "green", "blue", "yellow");
array_splice($input5, 3, 0, "purple");
var_dump($input5);

array(2) { [0]=> string(3) "red" [1]=> string(5) "green" }

array(2) { [0]=> string(3) "red" [1]=> string(6) "yellow" }

array(2) { [0]=> string(3) "red" [1]=> string(6) "orange" }

array(5) { [0]=> string(3) "red" [1]=> string(5) "green" [2]=> string(4) "blue" [3]=> string(5) "black" [4]=> string(6) "maroon" }

array(5) { [0]=> string(3) "red" [1]=> string(5) "green" [2]=> string(4) "blue" [3]=> string(6) "purple" [4]=> string(6) "yellow" }

20、计算数组中所有值的和——array_sum

用法:array_num(array)(number)

<?php
$a = array(2, 4, 6, 8);
$b = array("a" => 1.2, "b" => 2.3, "c" => 3.4);
var_dump(array_sum($a));
var_dump(array_sum($b));

结果:int(20) float(6.9)

展开阅读全文
php
打赏
1
2 收藏
分享
加载中
更多评论
打赏
0 评论
2 收藏
1
分享
返回顶部
顶部