在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(“&gt;”, “&lt;”), $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(“&gt;”, “&lt;”), $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&&gt;

[1] => def&lt;

)

测试二

array_map and create_function and custom function

Array

(

[0] => abcd&&gt;

[1] => def&lt;

)

filterStr:ab&&lt;&gt;cd

测试三

Array

(

[0] => ab

[1] => cd

[2] =>

[3] => ef

[4] => gh

)

Array

(

[0] => ab

[1] => cd

[3] => ef

[4] => gh

)

PHP中create_function的用法总结的更多相关文章

  1. [转载]C#中MessageBox.Show用法以及VB.NET中MsgBox用法

    一.C#中MessageBox.Show用法 MessageBox.Show (String) 显示具有指定文本的消息框. 由 .NET Compact Framework 支持. MessageBo ...

  2. C#中string.format用法详解

    C#中string.format用法详解 本文实例总结了C#中string.format用法.分享给大家供大家参考.具体分析如下: String.Format 方法的几种定义: String.Form ...

  3. SQL中distinct的用法

    SQL中distinct的用法   1.作用于单列 2.作用于多列 3.COUNT统计 4.distinct必须放在开头 5.其他 在表中,可能会包含重复值.这并不成问题,不过,有时您也许希望仅仅列出 ...

  4. Oracle 中 decode 函数用法

    Oracle 中 decode 函数用法 含义解释:decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 该函数的含义如下:IF 条件=值1 THEN RETURN(翻译 ...

  5. jQuery中Animate进阶用法(一)

    jQuery中animate的用法你了解多少呢?如果仅仅是简单的移动位置,显示隐藏,哦!天哪你在浪费资源!因为animate太强大了,你可以有很多意想不到的用法!让我们一起研究一下吧~~ 首先要了解j ...

  6. [转载]js中return的用法

    一.返回控制与函数结果,语法为:return 表达式; 语句结束函数执行,返回调用函数,而且把表达式的值作为函数的结果 二.返回控制,无函数结果,语法为:return;  在大多数情况下,为事件处理函 ...

  7. js中this的用法

    经过近几周的模拟面试题,我查询了一些资料,今天就来说说,在js中this的用法吧.方法有四:第一,用作全局变量,第二,用作表该对象,第三,用作构造函数,第四,用作call和applay

  8. jQuery中eq()方法用法实例

    本文实例讲述了jQuery中eq()方法用法.分享给大家供大家参考.具体分析如下: 此方法能够获取匹配元素集上的相应位置索引的元素. 匹配元素集上元素的位置索引是从0开始的. 语法结构: 复制代码 代 ...

  9. php中return的用法实例分析

    本文实例讲述了php中return的用法.分享给大家供大家参考.具体分析如下: 首先,它的意思就是返回;return()是语言结构而不是函数,仅在参数包含表达式时才需要用括号将其括起来.当返回一个变量 ...

随机推荐

  1. Java Web报错:getOutputStream() has already been called for this response解决方案

    今天做了个导出excel表的功能.大概代码如下: ouputStream = response.getOutputStream(); wb.write(ouputStream); ouputStrea ...

  2. python 补缺收集

    [http://www.cnblogs.com/happyframework/p/3255962.html] 1. 高效code 与 不常用的函数用法: #带索引的遍历 , )): print(ind ...

  3. 题解 P2626 【斐波那契数列(升级版)】

    这道题,大家一定要注意: 要对2^31取模 ! ( 本蒟蒻开始没注意到这一点,WA了 ) (不过大家在试样例的时候,试试47,出不了结果,就说明你没模2^31) 总体来说,这道题考查的知识点就两个: ...

  4. es6中的promise解读

    目录 什么是promise? promise的优点 回调地狱问题  Promise的三种状态 一个简单的promise promise中的then 利用promise解决回调地狱 promise的链式 ...

  5. 四、Linux 忘记密码解决方法

    Linux 忘记密码解决方法 很多朋友经常会忘记Linux系统的root密码,linux系统忘记root密码的情况该怎么办呢?重新安装系统吗?当然不用!进入单用户模式更改一下root密码即可. 步骤如 ...

  6. PHP添加扩展模块的方法

    进入源码包对应扩展模块目录下 ##extname 代表扩展模块名 cd /usr/local/src/php-5.5.36/ext/extname 然后执行phpize##phpize是一个shell ...

  7. Python Map, Filter and Reduce

    所属网站分类: python基础 > 函数 作者:慧雅 原文链接: http://www.pythonheidong.com/blog/article/21/ 来源:python黑洞网 www. ...

  8. 解决cmd目录下pip命令不存在的问题

    解决cmd目录下pip命令不存在的问题 注:pip.exe程序在Python安装目录下的scripts中1.在cmd命令中输入: 先输入:python -m ensurepip 再输入:python ...

  9. 关于js中onclick字符串传参问题(html="")

    规则: 外变是“”,里面就是‘’外边是‘’,里边就是“”   示例: var a="111"; var html="<a onclick='selecthoods( ...

  10. uva1422 二分法+优先队列贪心

    题意:有n个任务,每个任务必须在在时刻[r, d]之内执行w的工作量(三个变量都是整数).处理器执行的速度可以变化,当速度为s时,一个工作量为w的任务需要 执行的时间为w/s个单位时间.另外不一定要连 ...