首页 后端开发 php教程 php中的数组函数学习记录2

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

Jun 23, 2016 pm 01:13 PM

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

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

$input_array=array("1"=>"java","op"=>"R","act"=>"python","php","redis");<br />$array=array("sd","wd","gh");<br />var_dump(array_key_exists(1,$array));<br />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");<br />$array=array("sd","wd","gh");<br />var_dump(array_keys($array));<br />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){<br />    return($n * $n * $n);<br />}<br />$a = array(1, 2, 3, 4, 5);<br />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");<br />$array=array("sd","wd","gh");<br />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);<br />$ar2 = array(10, "color" => array("favorite" => "green", "blue"));<br />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");<br />$ar2 = array(1, 3, "2", 1);<br />array_multisort($ar1, $ar2);<br />var_dump($ar1);<br />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);<br />$array2=array('java'=>array('redis','mysql'));<br />var_dump(array_pad($array1,6,'40'));<br />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);<br />$array2=array();<br />var_dump(array_pop($array1));<br />var_dump(count($array1));<br />var_dump(array_pop($array2));
登录后复制

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

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

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

$array1=array(10,20,30);<br />$array2=array(1,'er');<br />$array3=array(10,20,30=>20);<br />var_dump(array_product($array1));<br />var_dump(array_product($array2));<br />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);<br />var_dump(array_push($array1,'erer','weert'));<br />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);<br />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){<br />    $v += $w;<br />    return $v;}<br />function rmul($v, $w){<br />    $v *= $w;<br />    return $v;}<br />$a = array(1, 2, 3, 4, 5);<br />$x = array();<br />var_dump(array_reduce($a, "rsum"));<br />var_dump(array_reduce($a, "rmul", 10));<br />var_dump(\array_reduce($x, "rsum", 1));<br />
登录后复制

结果: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"), );<br />$replacements = array('citrus' => array('pineapple'), 'berries' => array('blueberry'));<br />$basket = array_replace_recursive($base, $replacements);<br />print_r($basket);<br />$basket = array_replace($base, $replacements);<br />print_r($basket);<br />
登录后复制

结果: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');<br />var_dump(array_reverse($input));<br />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');<br />var_dump(array_search('php',$input));<br />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');<br />var_dump(array_shift($input));<br />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不会重制数组的键

$input = array("a", "b", "c", "d", "e");<br />print_r(array_slice($input, 2, -1));<br />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<br />$input1 = array("red", "green", "blue", "yellow");<br />array_splice($input1, 2);<br />var_dump($input1);<br />$input2 = array("red", "green", "blue", "yellow");<br />array_splice($input2, 1, -1);<br />var_dump($input2);<br />$input3 = array("red", "green", "blue", "yellow");<br />array_splice($input3, 1, count($input3), "orange");<br />var_dump($input3);<br />$input4 = array("red", "green", "blue", "yellow");<br />array_splice($input4, -1, 1, array("black", "maroon"));<br />var_dump($input4);<br />$input5 = array("red", "green", "blue", "yellow");<br />array_splice($input5, 3, 0, "purple");<br />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<br />$a = array(2, 4, 6, 8);<br />$b = array("a" => 1.2, "b" => 2.3, "c" => 3.4);<br />var_dump(array_sum($a));<br />var_dump(array_sum($b));
登录后复制

结果:int(20) float(6.9)

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

会话如何劫持工作,如何在PHP中减轻它? 会话如何劫持工作,如何在PHP中减轻它? Apr 06, 2025 am 12:02 AM

会话劫持可以通过以下步骤实现:1.获取会话ID,2.使用会话ID,3.保持会话活跃。在PHP中防范会话劫持的方法包括:1.使用session_regenerate_id()函数重新生成会话ID,2.通过数据库存储会话数据,3.确保所有会话数据通过HTTPS传输。

在PHP API中说明JSON Web令牌(JWT)及其用例。 在PHP API中说明JSON Web令牌(JWT)及其用例。 Apr 05, 2025 am 12:04 AM

JWT是一种基于JSON的开放标准,用于在各方之间安全地传输信息,主要用于身份验证和信息交换。1.JWT由Header、Payload和Signature三部分组成。2.JWT的工作原理包括生成JWT、验证JWT和解析Payload三个步骤。3.在PHP中使用JWT进行身份验证时,可以生成和验证JWT,并在高级用法中包含用户角色和权限信息。4.常见错误包括签名验证失败、令牌过期和Payload过大,调试技巧包括使用调试工具和日志记录。5.性能优化和最佳实践包括使用合适的签名算法、合理设置有效期、

描述扎实的原则及其如何应用于PHP的开发。 描述扎实的原则及其如何应用于PHP的开发。 Apr 03, 2025 am 12:04 AM

SOLID原则在PHP开发中的应用包括:1.单一职责原则(SRP):每个类只负责一个功能。2.开闭原则(OCP):通过扩展而非修改实现变化。3.里氏替换原则(LSP):子类可替换基类而不影响程序正确性。4.接口隔离原则(ISP):使用细粒度接口避免依赖不使用的方法。5.依赖倒置原则(DIP):高低层次模块都依赖于抽象,通过依赖注入实现。

如何在系统重启后自动设置unixsocket的权限? 如何在系统重启后自动设置unixsocket的权限? Mar 31, 2025 pm 11:54 PM

如何在系统重启后自动设置unixsocket的权限每次系统重启后,我们都需要执行以下命令来修改unixsocket的权限:sudo...

在PHPStorm中如何进行CLI模式的调试? 在PHPStorm中如何进行CLI模式的调试? Apr 01, 2025 pm 02:57 PM

在PHPStorm中如何进行CLI模式的调试?在使用PHPStorm进行开发时,有时我们需要在命令行界面(CLI)模式下调试PHP�...

解释PHP中的晚期静态绑定(静态::)。 解释PHP中的晚期静态绑定(静态::)。 Apr 03, 2025 am 12:04 AM

静态绑定(static::)在PHP中实现晚期静态绑定(LSB),允许在静态上下文中引用调用类而非定义类。1)解析过程在运行时进行,2)在继承关系中向上查找调用类,3)可能带来性能开销。

如何用PHP的cURL库发送包含JSON数据的POST请求? 如何用PHP的cURL库发送包含JSON数据的POST请求? Apr 01, 2025 pm 03:12 PM

使用PHP的cURL库发送JSON数据在PHP开发中,经常需要与外部API进行交互,其中一种常见的方式是使用cURL库发送POST�...

See all articles