array_walk、array_map、array_filter 的用法

array_walk、array_map、array_filter  和 foreach 都有循环对数组元素进行处理的功能。

一、array_walk 用法

1、循环数组,回调处理(并不修改数组元素的值,而是跳出去做其他的事情[回调的定义])

如:

$arr = [
    [‘name‘ => ‘A‘, ‘age‘ => 18],
    [‘name‘ => ‘B‘, ‘age‘ => 11],
];
 array_walk($arr, function ($value) {
     //做其他的逻辑处理,不对数组元素进行处理
     echo  "name:" . $value[‘name‘] . ‘, age:‘ . $value[‘age‘] . "\n";
 });

输出的结果:

name:A, age:18
name:B, age:11

2、循环数组,对数据的元素进行处理

如:

$arr = [
    [‘name‘ => ‘A‘, ‘age‘ => 18],
    [‘name‘ => ‘B‘, ‘age‘ => 11],
];

//使用引用
 array_walk($arr, function (&$value) {
    //修改元素的 age  值
    $value[‘age‘] = $value[‘age‘] - 1;

 });

print_r($arr);

输出结果:

Array
(
   [0] => Array
       (
           [name] => A
           [age] => 17
       )
   [1] => Array
       (
           [name] => B
           [age] => 10
       )
)

二、array_map 用法

array_map 的作用其实和array_walk 的引用差不多,就是循环数组,对数组元素的值进行处理;

三、array_filter 用回调函数过滤数组中的单元

通过 array_filter 处理过的数组,数字索引的数组会是不连续的,要通过 array_values()处理整理数组

function odd($var)
{
    // returns whether the input integer is odd
    return($var & 1);
}

function even($var)
{
    // returns whether the input integer is even
    return(!($var & 1));
}

$array1 = array("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);
$array2 = array(6, 7, 8, 9, 10, 11, 12);

echo "Odd :\n";
print_r(array_filter($array1, "odd"));
echo "Even:\n";
print_r(array_filter($array2, "even"));

原文地址:https://www.cnblogs.com/echojson/p/12072009.html

时间: 2024-11-02 09:48:14

array_walk、array_map、array_filter 的用法的相关文章

php中array_map,array_filter,array_walk区别

在php中array_map,array_filter,array_walk三个函数都是对数据操作的,下面我来介绍这三个函数的用法与区别. array_walk: array_walk()返回布尔值,如果回调函数需要直接作用于数组中的值,则给回调函数的第一个参数指定为引用.这样任何对这些单元的改变也将会改变原始数组本身.此函数可以同时获取到数组的key和value. array_map: array_map() 返回一个数组,该数组包含了 arr1 中的所有单元经过 callback 作用过之后

PHP中array_map与array_column之间的关系分析

array_map()与array_column()用法如下: array_map();将回调函数作用到给定数组的单元上array_column();快速实现:将二维数组转为一维数组 array_column()函数格式为: array array_column ( array $input , mixed $column_key [, mixed $index_key ] ); 返回input数组中值为column_key的列; 如果指定了可选参数index_key,返回的数组中 对应键 为i

PHP中 array_map 与 array_column 之间的关系

(PHP 5 >= 5.5.0) array_map()与array_column()用法如下: array_map();将回调函数作用到给定数组的单元上array_column();快速实现:将二维数组转为一维数组 array_column()函数格式为: array array_column ( array $input , mixed $column_key [, mixed $index_key ] ); 返回input数组中值为column_key的列; 如果指定了可选参数index_

php中的for 和foreach性能对比

总体来说,如果数据库过几十万了,才能看出来快一点还是慢一点,如果低于10万的循环,就不用测试了,两者性差异不明显.但是我还是推荐用foreach.循环数字数组时,for需要事先count($arr)计算数组长度,需要引入自增变量$i,每次循环都要进行条件判断$i<$c,然后自增$i++,输出数组元素时,$arr[$i]需要进行哈希操作. 而foreach循环数组时,指针会自动指向下一个元素,不需要计算数组长度,没有条件判断和自增变量,调用元素时也没有哈希操作,所以性能肯定要比for和while高

PHP 数组详解之函数【一】

1.         判断查找in_array()函数判断数组是否包含某元素:array_search()在数组中搜索特定值并返回索引号/键名,如果不存在则返回false. 2.         数组排序sort()/rsort()保持键的位置,依值排序:asort()/arsort()依值排序,保持键值对应:ksort()/krsort()依键排序,保持键值对应:natsort()/natcasesort()按自然顺序重排,保持键值对应:shuffle()随机排序.array_reverse(

Webshell免杀绕过waf

0x01 前言# 尽最大努力在一文中让大家掌握一些有用的WEBSHELL免杀技巧 0x02 目录# 关于eval 于 assert 字符串变形 定义函数绕过 回调函数 回调函数变形 特殊字符干扰 数组 类 编码绕过 无字符特征马 PHP7.1后webshell何去何从 总结 0x03 关于eval 于 assert# 关于eval函数在php给出的官方说明是 eval 是一个语言构造器而不是一个函数,不能被 可变函数 调用可变函数:通过一个变量,获取其对应的变量值,然后通过给该值增加一个括号()

PHP常见代码执行后门函数

PHP常见代码执行后门函数 代码执行: 应用程序在调用一些能够将字符串转换为代码的函数(例如php中的eval中),没有考虑用户是否控制这个字符串,将造成代码执行漏洞. 常见php代码执行函数介绍 常用执行代码函数 1.eval(): <?php @eval($_POST['hacker']); ?> eval函数将接受的字符串当做代码执行 2. assert(): 用法和 eval()一样 <?php @assert($_POST['hacker']); ?> 3.preg_re

PHP闭包的使用

一.介绍 匿名函数(Anonymous functions),也叫闭包函数(closures),允许 临时创建一个没有指定名称的函数.最经常用作回调函数(callback)参数的值.当然,也有其它应用的情况. 二.使用场景 1.动态调用静态类的时候 <?php class test { public static function getinfo() { var_dump(func_get_args()); } } call_user_func(array('test', 'getinfo'),

Hacking PHP

0X01 SQL注入 这里主要是PHP的防范注入的几个配置,注入手法不再赘述 magic_quotes_gpc 对 $_GET $_POST $_COOKIE 变量中的 ' " \ 空字符(NULL) 进行转义.但这个特性在 PHP5.3.0 中已经不推荐使用,并且在 PHP5.4.0 中已经移除.注意它并不会过滤 $_SERVER magic_quotes_runtime 对从数据库或文件中获取的数据进行过滤,过滤内容与 magic_quotes_gpc 一致.但在PHP5.4中被废弃. ma