PHP递归调用数组值并用其执行指定函数的方法


Posted in PHP onApril 01, 2015

本文实例讲述了PHP递归调用数组值并用其执行指定函数的方法。分享给大家供大家参考。具体分析如下:

以下为wordpress原代码,为了偷懒,简单修改一下以适用其它函数

/**
* Navigates through an array and removes slashes from the values.
*
* If an array is passed, the array_map() function causes a callback to pass the
* value back to the function. The slashes from this value will removed.
*
* @since 2.0.0
*
* @param mixed $value The value to be stripped.
* @return mixed Stripped value.
*/
function stripslashes_deep($value) {
 if ( is_array($value) ) {
  $value = array_map('stripslashes_deep', $value);
 } elseif ( is_object($value) ) {
  $vars = get_object_vars( $value );
  foreach ($vars as $key=>$data) {
   $value->{$key} = stripslashes_deep( $data );
  }
 } elseif ( is_string( $value ) ) {
  $value = stripslashes($value);
 }
 return $value;
}

代码如下:

<?php 
function function_deep($function,$value) {
  try {
    if(!function_exists($function)){
      $error = '"'.$function.'" is undefined';
      throw new Exception($error);
    }
  } catch (Exception $e) {
    echo 'Caught exception: ', $e->getMessage(), "\n";
    die();
  }
  if ( is_array($value) ) {
    $fun = Array();
    for($i=1;$i<=count($value);$i++){
      $fun[] = $function; 
    }
    $value = array_map("function_deep",$fun, $value);
  } elseif ( is_object($value) ) {
    $vars = get_object_vars( $value );
    foreach ($vars as $key=>$data) {
      $value->{$key} = function_deep($function,$data );
    }
  } elseif ( is_string( $value ) ) {
    $value = call_user_func($function,$value);
  }
  return $value;
}
$arr = array(
    "I'm bean",
    "I'm bean",
    array("I'm bean","I'm bean")
    );
var_dump(function_deep("addslashes",$arr));
// 输出结果
// array (size=3)
//  0 => string 'I\'m bean' (length=9)
//  1 => string 'I\'m bean' (length=9)
//  2 => 
//   array (size=2)
//    0 => string 'I\'m bean' (length=9)
//    1 => string 'I\'m bean' (length=9) 
?>

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
使用PHP数组实现无限分类,不使用数据库,不使用递归.
Dec 09 PHP
PHP数据缓存技术
Feb 14 PHP
php数组函数序列之array_flip() 将数组键名与值对调
Nov 07 PHP
ajax php传递和接收变量实现思路及代码
Dec 19 PHP
PHP static局部静态变量和全局静态变量总结
Mar 02 PHP
thinkphp实现面包屑导航(当前位置)例子分享
May 10 PHP
php学习笔记之基础知识
Nov 08 PHP
php数组转成json格式的方法
Mar 09 PHP
php正则替换处理HTML页面的方法
Jun 17 PHP
Yii2验证器(Validator)用法分析
Jul 23 PHP
PHP rmdir()函数的用法总结
Jul 02 PHP
thinkPHP+mysql+ajax实现的仿百度一下即时搜索效果详解
Jul 15 PHP
php微信公众平台开发类实例
Apr 01 #PHP
PHP生成指定随机字符串的简单实现方法
Apr 01 #PHP
php使用Image Magick将PDF文件转换为JPG文件的方法
Apr 01 #PHP
php快速查找数据库中恶意代码的方法
Apr 01 #PHP
php将12小时制转换成24小时制的方法
Mar 31 #PHP
php给一组指定关键词添加span标签的方法
Mar 31 #PHP
php使用指定编码导出mysql数据到csv文件的方法
Mar 31 #PHP
You might like
用PHP创建PDF中文文档
2006/10/09 PHP
php5.2时间相差8小时
2007/01/15 PHP
一个不易被发现的PHP后门代码解析
2014/07/05 PHP
php递归法读取目录及文件的方法
2015/01/30 PHP
php调用淘宝开放API实现根据卖家昵称获取卖家店铺ID的方法
2015/07/29 PHP
WordPress主题制作之模板文件的引入方法
2015/12/28 PHP
解析WordPress中控制用户登陆和判断用户登陆的PHP函数
2016/03/01 PHP
在PHP中实现使用Guzzle执行POST和GET请求
2019/10/15 PHP
解决laravel5.4下的group by报错的问题
2019/10/16 PHP
jQuery on()绑定动态元素出现的问题小结
2016/02/19 Javascript
浅谈Web页面向后台提交数据的方式和选择
2016/09/23 Javascript
深入理解bootstrap框架之入门准备
2016/10/09 Javascript
浅析JavaScript中break、continue和return的区别
2016/11/30 Javascript
js防抖和节流的深入讲解
2018/12/06 Javascript
解决vue组件中click事件失效的问题
2019/11/09 Javascript
Vue中用JSON实现刷新界面不影响倒计时
2020/10/26 Javascript
js实现有趣的倒计时效果
2021/01/19 Javascript
[01:33:25]DOTA2-DPC中国联赛 正赛 Elephant vs IG BO3 第一场 1月24日
2021/03/11 DOTA
Django查找网站项目根目录和对正则表达式的支持
2015/07/15 Python
Python的Flask框架中的Jinja2模板引擎学习教程
2016/06/30 Python
Python数据结构之顺序表的实现代码示例
2017/11/15 Python
浅谈python常用程序算法
2019/03/22 Python
Python 动态导入对象,importlib.import_module()的使用方法
2019/08/28 Python
Python搭建HTTP服务过程图解
2019/12/14 Python
基于python实现破解滑动验证码过程解析
2020/05/28 Python
python实现一次性封装多条sql语句(begin end)
2020/06/06 Python
美国彩妆品牌:Coastal Scents
2017/04/01 全球购物
学子宴答谢词
2014/01/25 职场文书
学校后勤岗位职责
2014/02/19 职场文书
“三支一扶”支教教师思想汇报
2014/09/13 职场文书
优秀教师推荐材料
2014/12/16 职场文书
社区党员干部承诺书
2015/05/04 职场文书
工作证明格式范文
2015/06/15 职场文书
幼儿园教师管理制度
2015/08/05 职场文书
新年祝酒词大全
2015/08/11 职场文书
nginx 反向代理之 proxy_pass的实现
2021/03/31 Servers