您当前的位置: 首页 > 网站编程 > PHP教程 > PHP中create_function的用法总结

PHP中create_function的用法总结

作者:不详 来源:网络 发布时间: 2011-09-03 21:48 点击:
在php中,函数create_function主要用来创建匿名函数,有时候匿名函数可以发挥它的作用。 1.测试一 测试一主要用来循环替换数组中多个值的与,我们用array_map加上create_function解决这个问题。 ############################################### function filterChars

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("&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的用法总结"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4