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 相关文章推荐
PHP4实际应用经验篇(3)
Oct 09 PHP
用来给图片加水印的PHP类
Apr 09 PHP
PHP 八种基本的数据类型小结
Jun 01 PHP
匹配csdn用户数据库与官方用户的重合度并将重叠部分的用户筛选出来
Dec 25 PHP
win2003服务器使用WPS的COM组件的一些问题解决方法
Jan 11 PHP
php将数组存储为文本文件方法汇总
Oct 28 PHP
PHP的Yii框架中创建视图和渲染视图的方法详解
Mar 29 PHP
教你在header中隐藏php的版本信息
Aug 10 PHP
php多线程并发实现方法
Sep 30 PHP
PHP使用curl制作简易百度搜索
Nov 03 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
Sep 16 PHP
php双向队列实例讲解
Nov 17 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学习的路线图
2013/07/10 PHP
thinkphp,onethink和thinkox中验证码不显示的解决方法分析
2016/06/06 PHP
PHP使用file_get_contents发送http请求功能简单示例
2018/04/29 PHP
PHP使用 Pear 进行安装和卸载包的方法详解
2019/07/08 PHP
ExtJs的Date格式字符代码
2010/12/30 Javascript
25个非常棒的jQuery滑块插件和教程小结
2011/09/02 Javascript
使用Jquery实现点击文字后变成文本框且可修改
2013/09/21 Javascript
使用AngularJS处理单选框和复选框的简单方法
2015/06/19 Javascript
JavaScript仿静态分页实现方法
2015/08/04 Javascript
基于jquery实现日历签到功能
2020/09/11 Javascript
详解WordPress开发中get_current_screen()函数的使用
2016/01/11 Javascript
javascript使用闭包模拟对象的私有属性和方法
2016/10/05 Javascript
Bootstrap模态窗口源码解析
2017/02/08 Javascript
node.js中debug模块的简单介绍与使用
2017/04/25 Javascript
JS浮点数运算结果不精确的Bug解决
2019/08/01 Javascript
Javascript作用域和作用域链原理解析
2020/03/03 Javascript
JavaScript前端开发时数值运算的小技巧
2020/07/28 Javascript
Python使用xlrd模块操作Excel数据导入的方法
2015/05/26 Python
深入解读Python解析XML的几种方式
2016/02/16 Python
解析Python中的生成器及其与迭代器的差异
2016/06/20 Python
Python采集代理ip并判断是否可用和定时更新的方法
2018/05/07 Python
python实现windows下文件备份脚本
2018/05/27 Python
Python全排列操作实例分析
2018/07/24 Python
Anaconda2 5.2.0安装使用图文教程
2018/09/19 Python
pygame游戏之旅 创建游戏窗口界面
2018/11/20 Python
python 提取tuple类型值中json格式的key值方法
2018/12/31 Python
TensorFlow设置日志级别的几种方式小结
2020/02/04 Python
python 实现汉诺塔游戏
2020/11/28 Python
Python常用断言函数实例汇总
2020/11/30 Python
美国职棒大联盟官方网上商店:MLBShop.com
2017/11/12 全球购物
Servlet如何得到客户端机器的信息
2014/10/17 面试题
Delphi工程师笔试题
2013/09/21 面试题
办理护照介绍信
2014/01/16 职场文书
党员个人对照检查材料范文
2014/09/24 职场文书
Golang 空map和未初始化map的注意事项说明
2021/04/29 Golang
Spring this调用当前类方法无法拦截的示例代码
2022/03/20 Java/Android