array_filter与array_map

php数组array_filter函数和array_slice函数:<?php /* array_filter()用回调函数过滤数组中的单元 array_filter(array,function) 参数描述:如果自定义过滤函数返回 true,则被操作的数组的当前就会被包含在返回的结果数组中, 并将结果组成一个新的数组,如果原数组是一个关联数组,键名保持不变。 */ function delEmpty($val) {

<?php

	$arr = [1,2,3,4,false,null,‘‘,false,true];

	$arrNew = array_filter($arr);
	var_dump($arrNew);

打印

array(5) { [0]=> int(1) [1]=> int(2) [2]=> int(3) [3]=> int(4) [8]=> bool(true) }

说明所有未false和空的null的都被过滤掉了

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

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

array_filter ( array $array [, callable $callback [, int $flag = 0 ]] ) : array

依次将 array 数组中的每个值传递到 callback 函数。如果 callback 函数返回 true,则 array 数组的当前值会被包含在返回的结果数组中。数组的键名保留不变。

array

要循环的数组

callback

使用的回调函数

如果没有提供 callback 函数, 将删除 array 中所有等值为 FALSE 的条目。更多信息见转换为布尔值

flag

决定callback接收的参数形式:

  • ARRAY_FILTER_USE_KEY - callback接受键名作为的唯一参数
  • ARRAY_FILTER_USE_BOTH - callback同时接受键名和键值

返回过滤后的数组。

版本 说明
5.6.0 添加可选的参数 flag,以及常量 ARRAY_FILTER_USE_KEY 和 ARRAY_FILTER_USE_BOTH

Example #1 array_filter() 例子

<?php
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"));
?>

以上例程会输出:

Odd :
Array
(
    [a] => 1
    [c] => 3
    [e] => 5
)
Even:
Array
(
    [0] => 6
    [2] => 8
    [4] => 10
    [6] => 12
)

Example #2 不使用 callback 时的array_filter()

<?php

$entry = array(
             0 => ‘foo‘,
             1 => false,
             2 => -1,
             3 => null,
             4 => ‘‘
          );

print_r(array_filter($entry));
?>

以上例程会输出:

Array
(
    [0] => foo
    [2] => -1
)

Example #3 带 flag 标记的 array_filter()

<?php

$arr = [‘a‘ => 1, ‘b‘ => 2, ‘c‘ => 3, ‘d‘ => 4];

var_dump(array_filter($arr, function($k) {
    return $k == ‘b‘;
}, ARRAY_FILTER_USE_KEY));

var_dump(array_filter($arr, function($v, $k) {
    return $k == ‘b‘ || $v == 4;
}, ARRAY_FILTER_USE_BOTH));
?>

以上例程会输出:

array(1) {
  ["b"]=>
  int(2)
}
array(2) {
  ["b"]=>
  int(2)
  ["d"]=>
  int(4)
}

array_map ( callable $callback , array $array1 [, array $... ] ) : array

array_map():返回数组,是为 array1 每个元素应用 callback函数之后的数组。 callback 函数形参的数量和传给 array_map() 数组数量,两者必须一样。

callback

回调函数,应用到每个数组里的每个元素。

array1

数组,遍历运行 callback 函数。

...

数组列表,每个都遍历运行 callback 函数。

返回数组,包含 callback 函数处理之后 array1 的所有元素。

Example #1 array_map() 例子

<?php
function cube($n)
{
    return($n * $n * $n);
}

$a = array(1, 2, 3, 4, 5);
$b = array_map("cube", $a);
print_r($b);
?>

这使得 $b 成为:

Array
(
    [0] => 1
    [1] => 8
    [2] => 27
    [3] => 64
    [4] => 125
)

原文地址:https://www.cnblogs.com/php-linux/p/10625359.html

时间: 2024-10-31 21:06:43

array_filter与array_map的相关文章

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中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 作用过之后

array_filter、array_walk、array_map的区别

<?php $arr=array( 1,2,3,4,5,6 ); function filter($var){ if($var%2==0) return true; } $data=array_filter($arr,"filter"); $data=array(2,4,6); ?> <?php $arr1=array('linux','Php','JAVA'); array_map('strtoupper',$arr1); ?> 原文地址:https://ww

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) { //做其他的逻辑处

巧用array_map()和array_reduce()替代foreach循环

1.array_reduce( $arr , callable $callback ) 使用回调函数迭代地将数组简化为单一的值. 其中$arr 为输入数组,$callback($result , $value)接受两个参数,$result为上一次迭代产生的值,$value是当前迭代的值. 使用array_reduce()替代foreach()循环最常用的一个业务场景也许就是数组求和,比如: 1 $arr = array('1','2','3'); //计算数组中数字的和 2 $sum = 0;

巧用php中的array_filter()函数去掉多维空值

一直一维array_filter() 函数只能去除一维数组,其实这个函数也能去除多维数组: $arr =[ '0'=>array(), '1'=>'false', '2'=>'test', '3'=>'' ]; var_dump($arr); var_dump(array_filter($arr)); 最后发现所有的空值,包括array()空数组也没了,这个函数确实去除了所有的空值

PHP:数组操作函数array_walk()和array_map()

array_map()的函数原型为:array array_map ( callback callback, array arr1 [, array ...] ) array_map() 返回一个数组,该数组包含了arr1中的所有单元经过callback作用过之后的单元.callback接受的参数数目应该和传递给 array_map() 函数的数组数目一致.  callback函数就是array_map所将调用来处理元素单元函数,应以字符串的形式将函数名传递给array_map()   如:(p

PHP array_filter

1.函数的作用:过滤数组中的值: 2.函数的参数: @params  array $array @params  callback $callback @params int $flag [ARRAY_FILTER_USE_KEY 和 ARRAY_FILTER_USE_BOTH] 3.注意点: 1)不要在回调中改变数组本身: 4. 例子一: 1 <?php 2 /* 3 * 第二个元素是空格,并没有过滤掉 4 */ 5 $arr = ['',' ',null,0,'0','\n','\t',-1