php中的数组函数学习记录2
2016-03-23 00:00
525 查看
摘要: 阅读php学习手册,算是一个敲得,给自己留个印象,知道有这个东西,也是给自己看的。
1、检查给定的键名或索引是否存在于数组中——array_key_exists
用法:array_key_exists($key(mixed),$input(array))返回TRUE和FALSE
结果:bool(true) bool(true)
2、返回数组中所有的键名——array_keys
用法: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可以理解成是一个加工函数,加工方法自己写。
结果:array(5){ [0]=> int(1) [1]=> int(8) [2]=> int(27) [3]=> int(64) [4]=> int(125) }
4、合并一个或多个数组—array_merge(就是求并集)
语法:将一个数组中的值附加在另一个数组后面,如果是数字索引,键名会以连续方式重新索引
结果: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,键值重复不会覆盖,键名重复会自动的合并
结果: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.
结果:
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) 返回填充的结果
结果:
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。
结果:int(30) int(2)(数组长度减1) NULL
9、计算数组中所有值的乘积——array_product
用法:array_product($array),(要求数组中都是数字)
结果:int(6000) int(0) int(4000)
10、将一个或多个单元压入数组的末尾(入栈)——array_push
用法:array_push($array,mixed.....)这个是和array_pop出栈相对应的逐个追加到尾部,返回数组的个数
结果: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)) 随机从数组中取出多个单元(返回的是键名)
结果:array(3) { [0]=> int(0) [1]=> int(1) [2]=> int(4)}
12、用回调函数迭代地将数组简化为单一的值——array_reduce
用法:array_reduce($input(array),function,int),将回调函数 function 迭代地作用到 input 数组中的每一个单元中,从而将数组简化为单一的值。如果指定了可选参数 initial,该参数将被当成是数组中的第一个值来处理,或者如果数组为空的话就作为最终返回值
结果: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 数组的值。如果一个键存在于第一个数组同时也存在于第二个数组,它的值将被第二个数组中的值替换。如果一个键存在于第二个数组,但是不存在于第一个数组,则会在第一个数组中创建这个元素。如果一个键仅存在于第一个数组,它将保持不变。如果传递了多个替换数组,它们将被按顺序依次处理,后面的数组将覆盖之前的值。
结果: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为保留原来的键名
结果: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)
结果:int(1) string(1) "a"
17、将数组开头的单元移出数组——array_shift 作用类似于指针
用法:array_shift(array);将 array 的第一个单元移出并作为结果返回,将 array 的长度减一并将所有其它单元向前移动一位。所有的数字键名将改为从零开始计数,文字键名将不变。如果 array 为空(或者不是数组),则返回 NULL
结果: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不会重制数组的键
结果:Array ( [0] => c [1] => d ) Array ( [2] => c [3] => d )
19、把数组中的一部分去掉并用其它值取代 ——array_splice
array_splice($input(array),$offset(int),$length(int),$replace(array))
把 input 数组中由 offset 和 length 指定的单元去掉,如果提供了 replacement 参数,则用 replacement 数组中的单元取代。返回一个包含有被移除单元的数组。注意 input 中的数字键名不被保留。如果 offset 为正,则从 input 数组中该值指定的偏移量开始移除。如果 offset 为负,则从 input 末尾倒数该值指定的偏移量开始移除。
如果省略 length,则移除数组中从 offset 到结尾的所有部分。如果指定了 length 并且为正值,则移除这么多单元。如果指定了 length 并且为负值,则移除从 offset 到数组末尾倒数 length 为止中间所有的单元。小窍门:当给出了 replacement 时要移除从 offset 到数组末尾所有单元时,用 count($input) 作为 length。
如果给出了 replacement 数组,则被移除的单元被此数组中的单元替代。如果 offset 和 length 的组合结果是不会移除任何值,则 replacement 数组中的单元将被插入到 offset 指定的位置。注意替换数组中的键名不保留。如果用来替换的值只是一个单元,那么不需要给它加上 array(),除非该单元本身就是一个数组。
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)
结果:int(20) float(6.9)
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 数组中由 offset 和 length 指定的单元去掉,如果提供了 replacement 参数,则用 replacement 数组中的单元取代。返回一个包含有被移除单元的数组。注意 input 中的数字键名不被保留。如果 offset 为正,则从 input 数组中该值指定的偏移量开始移除。如果 offset 为负,则从 input 末尾倒数该值指定的偏移量开始移除。
如果省略 length,则移除数组中从 offset 到结尾的所有部分。如果指定了 length 并且为正值,则移除这么多单元。如果指定了 length 并且为负值,则移除从 offset 到数组末尾倒数 length 为止中间所有的单元。小窍门:当给出了 replacement 时要移除从 offset 到数组末尾所有单元时,用 count($input) 作为 length。
如果给出了 replacement 数组,则被移除的单元被此数组中的单元替代。如果 offset 和 length 的组合结果是不会移除任何值,则 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)
相关文章推荐
- 一个关于if else容易迷惑的问题
- PHP5.2.*防止Hash冲突拒绝服务攻击的Patch
- 深入理解PHP之匿名函数
- JSP/PHP基于Ajax的分页功能实现
- 关于PHP通过PDO用中文条件查询MySQL的问题。
- 什么是设计模式
- PHP数据库长连接mysql_pconnect的细节
- Php Installing An Expansion
- PHP+Apache在Windows 9x下的安装和配置
- IIS 6 的 PHP 最佳配置方法
- 安装Apache和PHP的一些补充
- Linux Apache+MySQL+PHP
- 建立Apache+PHP+MySQL数据库驱动的动态网站
- PHP 5.3.0 安装分析心得
- apache 环境下 php 的配置注意事项
- ASP.NET、ASP、PHP、JSP之间有什么区别?
- PHP VBS JS 函数 对照表
- C语言实现的统计php代码行数功能源码(支持文件夹、多目录)
- php xml 入门学习资料