PHP中create_function的用法总结
在php中,函数create_function主要用来创建匿名函数,有时候匿名函数可以发挥它的作用。
1.测试一
测试一主要用来循环替换数组中多个值的<与>,我们用array_map加上create_function解决这个问题。
###############################################
function filterChars($a) {
if (!is_array($a)) return false;
$a = array_map(create_function(‘$b’, ‘return str_replace(array(“>”, “<”), array(“>”, “<”), $b);’), $a);
return $a;
}
$a = array(‘abcd&>’, ‘def<’);
echo “array_map and create_function\n”;
print_r(filterChars($a));
###############################################
2.测试二
测试二与测试一实现同样的功能,只不过我们用的不是匿名函数,而是用自定义函数实现的,而且这个自定义函数实现在另外一个函数里面。
###############################################
function filterChars2($a) {
if (!is_array($a)) return false;
function filterStr($str) {
return str_replace(array(“>”, “<”), array(“>”, “<”), $str);
}
$a = array_map(‘filterStr’, $a);
return $a;
}
$a = array(‘abcd&>’, ‘def<’);
echo “array_map and create_function and custom function\n”;
print_r(filterChars2($a));
//如果调用了filterchar2函数,则在下面调用filterStr时不报错,如果在上面没有调用filterChar2函数,则会报类似如下的错误,Fatal error: Call to undefined function filterStr() in D:\myphp\research\test4.php on line 334
echo ‘filterStr:’ . filterStr(‘ab&<>cd’) . “\n”;
###############################################
3.测试三
测试三主要用来过滤文件中的空行,同时用trim去掉每一行的换行符然后保存在数组中。
###############################################
$file = ‘tmp_user.txt’;
if (file_exists($file)) {
$usernames = file($file);
print_r($usernames);
/*
array array_filter ( array input [, callback callback] )
array_filter() 依次将 input 数组中的每个值传递到 callback 函数。如果 callback 函数返回 TRUE,则 input 数组的当前值会被包含在返回的结果数组中。数组的键名保留不变。
切记,即使在array_filter中的create_function中用trim过滤了空白字符,但是仍然需要用array_map处理每一行中的内容,因为array_filter的作用是,只要回调函数返回true,则数组中当前的值被返回,返回的是用trim处理之前的值,也就是原始的值。
*/
$usernames = array_filter($usernames, create_function(‘$id’, ‘$id = trim($id); return !empty($id);’));
//由于文件通过file加载到数组中,因此一定要用trim处理一下去掉换行符
$usernames = array_map(create_function(‘$id’, ‘$id = trim($id); return $id;’), $usernames);
print_r($usernames);
}
###############################################
输出如下:
测试一
array_map and create_function
Array
(
[0] => abcd&>
[1] => def<
)
测试二
array_map and create_function and custom function
Array
(
[0] => abcd&>
[1] => def<
)
filterStr:ab&<>cd
测试三
Array
(
[0] => ab
[1] => cd
[2] =>
[3] => ef
[4] => gh
)
Array
(
[0] => ab
[1] => cd
[3] => ef
[4] => gh
)
PHP中create_function的用法总结的更多相关文章
- [转载]C#中MessageBox.Show用法以及VB.NET中MsgBox用法
一.C#中MessageBox.Show用法 MessageBox.Show (String) 显示具有指定文本的消息框. 由 .NET Compact Framework 支持. MessageBo ...
- C#中string.format用法详解
C#中string.format用法详解 本文实例总结了C#中string.format用法.分享给大家供大家参考.具体分析如下: String.Format 方法的几种定义: String.Form ...
- SQL中distinct的用法
SQL中distinct的用法 1.作用于单列 2.作用于多列 3.COUNT统计 4.distinct必须放在开头 5.其他 在表中,可能会包含重复值.这并不成问题,不过,有时您也许希望仅仅列出 ...
- Oracle 中 decode 函数用法
Oracle 中 decode 函数用法 含义解释:decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 该函数的含义如下:IF 条件=值1 THEN RETURN(翻译 ...
- jQuery中Animate进阶用法(一)
jQuery中animate的用法你了解多少呢?如果仅仅是简单的移动位置,显示隐藏,哦!天哪你在浪费资源!因为animate太强大了,你可以有很多意想不到的用法!让我们一起研究一下吧~~ 首先要了解j ...
- [转载]js中return的用法
一.返回控制与函数结果,语法为:return 表达式; 语句结束函数执行,返回调用函数,而且把表达式的值作为函数的结果 二.返回控制,无函数结果,语法为:return; 在大多数情况下,为事件处理函 ...
- js中this的用法
经过近几周的模拟面试题,我查询了一些资料,今天就来说说,在js中this的用法吧.方法有四:第一,用作全局变量,第二,用作表该对象,第三,用作构造函数,第四,用作call和applay
- jQuery中eq()方法用法实例
本文实例讲述了jQuery中eq()方法用法.分享给大家供大家参考.具体分析如下: 此方法能够获取匹配元素集上的相应位置索引的元素. 匹配元素集上元素的位置索引是从0开始的. 语法结构: 复制代码 代 ...
- php中return的用法实例分析
本文实例讲述了php中return的用法.分享给大家供大家参考.具体分析如下: 首先,它的意思就是返回;return()是语言结构而不是函数,仅在参数包含表达式时才需要用括号将其括起来.当返回一个变量 ...
随机推荐
- IOS Window窗口使用
// 程序启动完毕之后就会调用一次 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NS ...
- EF和linq语句查询条件不等于某个参数出现的问题
where t.a!=字符串 这是错误的写法,正确为 where t.a!=字符串.trim() 其他类型变量需要保持实体类型和查询条件参数的类型是一致的,不然出现的语句可能会是 类似`Exten ...
- Missing map from Nullable`1 to String. Create using Mapper.CreateMap<Nullable`1, String>. 解决办法
这是一个叫做AutoMapper的插件,主要功能是让两个类的内容进行映射,最常见的例子就是EF查询出的内容映射到一个实体类上去然后返回这个实体类例如: Mapper.CreateMap(); 如果这时 ...
- python_51_函数返回值1
def test1(): '只执行return以前的' print('test1返回值为0 ') return 0 print('这句不会被执行的') x=test1() print(x)#值为0 d ...
- python读取txt写入txt
http://www.cnblogs.com/allenblogs/archive/2010/09/13/1824842.html
- 区块链工作 jd
https://www.lagou.com/jobs/4096098.html 技术咨询网站: https://mp.weixin.qq.com/s/hs37UZFGI3uR4qmQ7v346g## ...
- 使用Maven开发一个简单的SpringData
1:创建Maven项目 2:添加依赖(修改pom.xml为以下代码) <project xmlns="http://maven.apache.org/POM/4.0.0" x ...
- web前端-回调函数sort详解
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- Why I get “No connection associated with this command”?
- x01.xiangqi: 走动棋子
采用 pygame 写的象棋程序,目前只完成绘制棋盘与走动棋子,还没考虑规则等问题. 1. 代码: """ x01.xiangqi (c) 2019 by x01&quo ...