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实现的功能是显示8条基色色带
Oct 09 PHP
PHP中文件缓存转内存缓存的方法
Dec 06 PHP
Yii框架调试心得--在页面输出执行sql语句
Dec 25 PHP
php导入模块文件分享
Mar 17 PHP
php清除和销毁session的方法分析
Mar 19 PHP
全面解读PHP的人气开发框架Laravel
Oct 15 PHP
PHP数组去重比较快的实现方式
Jan 19 PHP
CI框架集成Smarty的方法分析
May 17 PHP
PHP判断用户是否已经登录(跳转到不同页面或者执行不同动作)
Sep 22 PHP
用PHP的socket实现客户端到服务端的通信实例详解
Feb 04 PHP
PHP7新特性之抽象语法树(AST)带来的变化详解
Jul 17 PHP
Laravel等框架模型关联的可用性浅析
Dec 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
BBS(php &amp; mysql)完整版(一)
2006/10/09 PHP
PHP中array_merge和array相加的区别分析
2013/06/17 PHP
php模板原理讲解
2013/11/13 PHP
laravel 5 实现模板主题功能(续)
2015/03/02 PHP
js 得到文件后缀(通过正则实现)
2013/07/08 Javascript
js获取指定日期前后的日期代码
2013/08/20 Javascript
Javascript闭包用法实例分析
2015/01/23 Javascript
nodejs通过phantomjs实现下载网页
2015/05/04 NodeJs
JavaScript 正则表达式中global模式的特性
2016/02/25 Javascript
详解jQuery lazyload 懒加载
2016/12/19 Javascript
如何提高javascript加载速度
2016/12/26 Javascript
vuejs父子组件通信的问题
2017/01/11 Javascript
微信小程序 setData使用方法及常用错误解决办法
2017/05/11 Javascript
vue 使用html2canvas将DOM转化为图片的方法
2018/09/11 Javascript
vue使用echarts图表的详细方法
2018/10/22 Javascript
JS实现点击按钮随机生成可拖动的不同颜色块示例
2019/01/30 Javascript
Vue项目服务器部署之子目录部署方法
2019/05/12 Javascript
解决iview table组件里的 固定列 表格不自适应的问题
2020/11/13 Javascript
Python中的异常处理简明介绍
2015/04/13 Python
Python使用arrow库优雅地处理时间数据详解
2017/10/10 Python
django实现登录时候输入密码错误5次锁定用户十分钟
2017/11/05 Python
用pandas按列合并两个文件的实例
2018/04/12 Python
numpy:找到指定元素的索引示例
2019/11/26 Python
Ubuntu16.04安装python3.6.5步骤详解
2020/01/10 Python
基于Python的接口自动化读写excel文件的方法
2021/01/15 Python
基于CSS3实现的漂亮Menu菜单效果代码
2015/09/10 HTML / CSS
HTML5探秘:用requestAnimationFrame优化Web动画
2018/06/03 HTML / CSS
HTML5地理定位_动力节点Java学院整理
2017/07/12 HTML / CSS
Araks官网:纽约内衣品牌
2020/10/15 全球购物
编辑找工作求职信分享
2014/01/03 职场文书
《蚕姑娘》教学反思
2014/04/15 职场文书
趣味运动会赞词
2015/07/22 职场文书
Python机器学习之KNN近邻算法
2021/05/14 Python
《遗弃》开发商删推文要跑路?官方回应:还在开发
2022/04/03 其他游戏
vue3引入highlight.js进行代码高亮的方法实例
2022/04/08 Vue.js
python manim实现排序算法动画示例
2022/08/14 Python