网站首页 > 技术文章 正文
1. array_filter() 用回调函数过滤数组中的单元
2. array_walk() 数组中的每个成员应用用户函数
3. array_map() 将回调函数作用到给定数组的单元上
array_filter 使用方法
array array_filter ( array $input [, callback $callback ] )
array_filter() 依次将 input 数组中的每个值传递到 callback 函数。
如果 callback 函数返回 TRUE, 则 input数组的当前值会被包含在返回的结果数组中。数组的键名保留不变。
如果没有提供 callback函数, array_filter()将删除 input 中所有等值为 FALSE 的条目
$arr=array(1,2,3,4,5,-6,7,7,8,8,-9,9,10,11,-12);
$arr1=array_filter($arr, "myfun");
function myfun($n){
if($n>0)
return true;
else
return false;
}
echo '<pre>';
print_r($arr1);
echo '</pre>';
<?php
function odd($var)
{
return($var % 2 == 1);
}
function even($var)
{
return($var % 2 == 0);
}
$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"));
?>
PHP数组去除空值array_filter()方法
实例:
<?php
$arr = array('a' => "abc", 'b' => "bcd",'c' =>"cde",'d' =>"def",'e'=>"");
$b= array_filter($arr); //第二个参数默认值 null, 但不能传递 null 否则会报 警告错误
//$b= array_filter($arr, null); Warning: array_filter() expects parameter 2 to be a valid callback, no array or string given
print_r($b);
?>
//返回结果:
Array (
[a] => abc
[b] => bcd
[c] => cde
[d] => def
)
bool array_walk ( array &$array , callback $funcname [, mixed $userdata ] )
将用户自定义函数 funcname 应用到 array 数组中的每个单元。典型情况下 funcname 接受两个参数。
array参数的值作为第一个, 键名作为第二个。如果提供了可选参数 userdata, 将被作为第三个参数传递给 callback funcname。
<?php
function myFun1($value,$key) { //定义一个回调函数接收两个参数
echo "The key $key has the value $value<br>"; //将参数连接在一超输出
}
$lamp=array("a"=>"Linux","b"=>"Apache","c"=>"Mysql","d"=>"PHP"); //定义一个数组$lamp
array_walk($lamp,"myFun1"); //使用array_walk函数传入一个数组和一个回调函数
/* 执行后输出如下结果:
The key a has the value Linux
The key b has the value Apache
The key c has the value MySQL
The key d has the value PHP */
function myFun2($value,$key,$p) { //自定义一个回调函数需要接受三个参数
echo "$key $p $value <br>"; //将三个参数连接后输出
}
array_walk($lamp,"myFun2","has the value"); //使用array_walk函数传入三个参数
/*执行后输出如下结果:
a has the value Linux
b has the value Apache
c has the value MySQL
d has the value PHP */
function myFun3(&$value,$key) { //改变数组元素的值(请注意 &$value传入引用)
$value="Web"; //将改变原数组中每个元素的值
}
array_walk($lamp,"myFun3"); //使用array_walk函数传入两个参数,其中第一个参数为引用
print_r($lamp); //输出:Array ( [a] => Web [b] => Web [c] => Web [d] => Web )
?>
array array_map ( callback $callback , array $arr1 [, array $... ] )
array_map() 返回一个数组, 该数组包含了 arr1 中的所有单元经过 callback 作用过之后的单元。
callback接受的参数数目应该和传递给 array_map() 函数的数组数目一致。
<?php
function myFun1($v) { //自定义一个函数作为回调函数,接收数组中每个元素做为参数
if ($v==="MySQL") { //如果数组中元素的值恒等于MySQL条件成功
return "Oracle"; //返回Oracle
}
return $v; //不等于MySQL的元素都返回传入的值,即原型返回
}
$lamp=array("Linux","Apache","MySQL","PHP"); //声明一个有4个元素的数组$lamp
print_r(array_map("myFun1",$lamp)); //使用array_map()函数传入一个函数名和一个数组参数
/*上面程序执行后输出Array ( [0] => Linux [1] => Apache [2] => Oracle [3] => PHP ) */
//使用多个参数, 回调函数接受的参数数目应该和传递给array_map()函数的数组数目一致
function myFun2($v1,$v2) { //自定义一个函数需要两个参数,两个数组中的元素依次传入
if ($v1===$v2) { //如果两个数组中的元素值相同则条件成功
return "same"; //返回same, 说明两个数组中对应的元素值相同
}
return "different"; //如果两个数组中对应的元素值不同,返回different
}
$a1=array("Linux","PHP","MySQL"); //声明数组$a1,有三个元素
$a2=array("Unix","PHP","Oracle"); //数组$a第二个元素值和$a中第二个元素的值相同
print_r(array_map("myFun2",$a1,$a2)); //使用array_map()函数传入多个数组
/*上面程序执行后输出:Array ( [0] => different [1] => same [2] => different ) */
//当自定义函数名设置为 null 时的情况
$a1=array("Linux","Apache"); //声明一个数组$a1, 有两个元素
$a2=array("MySQL","PHP"); //声明另一个数组$a2,也有两个元素
print_r(array_map(null,$a1,$a2)); //通过第一个参数设置为NULL,构造一个数组的数组
/*上面程序执行后输出:Array (
[0] => Array ( [0] => Linux [1] => MySQL )
[1] => Array ( [0] => Apache [1] => PHP ) ) */
?>
猜你喜欢
- 2024-11-03 Hadoop迁移MaxCompute神器之DataX-On-Hadoop使用指南
- 2024-11-03 如何设计一个支撑数亿用户的系统 如何设计一个支撑数亿用户的系统模型
- 2024-11-03 大数据Hadoop之——数据仓库Hive hive数据仓库有什么特点
- 2024-11-03 JAVA并发-AtomicIntegerArray java并发控制的几种方法
- 2024-11-03 Java教程:防缓存穿透利器-布隆滤器(BloomFilter)
- 2024-11-03 浅谈分库分表那些事儿 分库分表技术选型
- 2024-11-03 这一次,彻底弄懂 Java 字节码文件
- 2024-11-03 Oracle数据库扩展语言PL/SQL之集合
- 2024-11-03 如何看懂oracle执行计划(下) oracle的执行计划怎么看
- 2024-11-03 Oracle优化Java字符串内部表示 oracle配置字符集
你 发表评论:
欢迎- 621℃几个Oracle空值处理函数 oracle处理null值的函数
- 614℃Oracle分析函数之Lag和Lead()使用
- 602℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 598℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 594℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 586℃【数据统计分析】详解Oracle分组函数之CUBE
- 575℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 563℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端获取当前时间 (50)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle约束 (54)
- oracle 中文 (51)
- oracle链接 (54)
- oracle的函数 (58)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)