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面向对象全攻略 (一) 面向对象基础知识
Sep 30 PHP
一个PHP验证码类代码分享(已封装成类)
Jul 17 PHP
浅析php学习的路线图
Jul 10 PHP
php实现的九九乘法口诀表简洁版
Jul 28 PHP
php查询ip所在地的方法
Dec 05 PHP
php判断并删除空目录及空子目录的方法
Feb 11 PHP
PHP判断一个字符串是否是回文字符串的方法
Mar 23 PHP
Thinkphp批量更新数据的方法汇总
Jun 29 PHP
PHP对象克隆clone用法示例
Sep 28 PHP
PHP 常用时间函数资料整理
Oct 22 PHP
基于php数组中的索引数组和关联数组详解
Mar 12 PHP
PHP+jQuery实现双击修改table表格功能示例
Feb 21 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
thinkPHP框架实现多表查询的方法
2018/06/14 PHP
PDO::setAttribute讲解
2019/01/29 PHP
解决Laravel5.2 Auth认证退出失效的问题
2019/10/14 PHP
JavaScript 设计模式之组合模式解析
2010/04/09 Javascript
ajax中get和post的说明及使用与区别
2012/12/23 Javascript
js实现弹出窗口、页面变成灰色并不可操作的例子分享
2014/05/10 Javascript
简述AngularJS相关的一些编程思想
2015/06/23 Javascript
JS实现日期时间动态显示的方法
2015/12/07 Javascript
Bootstrap入门书籍之(零)Bootstrap简介
2016/02/17 Javascript
JS实现放大、缩小及拖拽图片的方法【可兼容IE、火狐】
2016/08/23 Javascript
类似于QQ的右滑删除效果的实现方法
2016/10/16 Javascript
jquery validation验证表单插件
2017/01/07 Javascript
React-Native做一个文本输入框组件的实现代码
2017/08/10 Javascript
Angular中使用better-scroll插件的方法
2018/03/27 Javascript
Vue头像处理方案小结
2018/07/26 Javascript
Vue CLI2升级至Vue CLI3的方法步骤
2019/05/20 Javascript
vue draggable resizable gorkys与v-chart使用与总结
2019/09/05 Javascript
layui使用templet格式化表格数据的方法
2019/09/16 Javascript
python 异常处理总结
2016/10/18 Python
python爬虫开发之selenium模块详细使用方法与实例全解
2020/03/09 Python
Python-jenkins模块之folder相关操作介绍
2020/05/12 Python
在pycharm创建scrapy项目的实现步骤
2020/12/01 Python
Html5页面二次分享的实现
2018/07/30 HTML / CSS
Vans(范斯)德国官网:美国南加州的原创极限运动潮牌
2017/05/02 全球购物
EJB与JAVA BEAN的区别
2016/08/29 面试题
生产经理的自我评价分享
2013/11/07 职场文书
测绘工程个人的自我评价
2013/11/23 职场文书
在校生自我鉴定
2014/01/23 职场文书
小学教师办公室制度
2014/02/03 职场文书
商务助理求职信范文
2014/04/20 职场文书
政府采购方案
2014/06/12 职场文书
小学生迎国庆演讲稿
2014/09/05 职场文书
2015年乡镇财政工作总结
2015/05/19 职场文书
政协常委会议主持词
2015/07/03 职场文书
创新创业项目计划书该怎样写?
2019/08/13 职场文书
【海涛DOTA】D-cup邀请赛NV.cn vs DT.Love
2022/04/01 DOTA