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 相关文章推荐
生成缩略图
Oct 09 PHP
数据库查询记录php 多行多列显示
Aug 15 PHP
提高PHP编程效率 引入缓存机制提升性能
Feb 15 PHP
php in_array 函数使用说明与in_array需要注意的地方说明
Apr 13 PHP
用sql命令修改数据表中的一个字段为非空(not null)的语句
Jun 04 PHP
php中使用explode查找某个字符是否存在的方法
Jul 12 PHP
PHP以指定字段为索引返回数据库所取的数据数组
Jun 30 PHP
8个必备的PHP功能实例代码
Oct 27 PHP
PHP连接SQLServer2005方法及代码
Dec 26 PHP
PHP框架Laravel学习心得体会
Oct 28 PHP
Yii2框架RESTful API 格式化响应,授权认证和速率限制三部分详解
Nov 10 PHP
详谈phpAdmin修改密码后拒绝访问的问题
Apr 03 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
我的论坛源代码(二)
2006/10/09 PHP
PHP Ajax实现页面无刷新发表评论
2007/01/02 PHP
php 引用(&amp;)详解
2009/11/20 PHP
kohana框架上传文件验证规则写法示例
2014/07/14 PHP
PHP获取一段文本显示点阵宽度和高度的方法
2015/03/12 PHP
thinkPHP的表达式查询用法详解
2016/09/14 PHP
PHP正则匹配到2个字符串之间的内容方法
2018/12/24 PHP
PHP7 新增功能
2021/03/09 PHP
Javascript 函数对象的多重身份
2009/06/28 Javascript
Extjs中DisplayField的日期或者数字格式化扩展
2010/09/03 Javascript
extjs中form与grid交互数据(record)的方法
2013/08/29 Javascript
JQuery动画animate的stop方法使用详解
2014/05/09 Javascript
JavaScript实现简洁的俄罗斯方块完整实例
2016/03/01 Javascript
Angular的事件和表单详解
2016/12/26 Javascript
Node.js 中exports 和 module.exports 的区别
2017/03/14 Javascript
javascript编程开发中取色器及封装$函数用法示例
2017/08/09 Javascript
Vue ElementUi同时校验多个表单(巧用new promise)
2018/06/06 Javascript
解决layer.confirm快速点击会重复触发事件的问题
2019/09/23 Javascript
判断JavaScript中的两个变量是否相等的操作符
2019/12/21 Javascript
vue Treeselect下拉树只能选择第N级元素实现代码
2020/08/31 Javascript
深入理解Python中字典的键的使用
2015/08/19 Python
pycharm远程开发项目的实现步骤
2019/01/20 Python
使用python判断jpeg图片的完整性实例
2019/06/10 Python
在Django下测试与调试REST API的方法详解
2019/08/29 Python
python飞机大战pygame游戏之敌机出场实现方法详解
2019/12/17 Python
解决TensorFlow训练内存不断增长,进程被杀死问题
2020/02/05 Python
使用Python将Exception异常错误堆栈信息写入日志文件
2020/04/08 Python
python装饰器三种装饰模式的简单分析
2020/09/04 Python
万宝龙英国官网:Montblanc手表、书写工具、皮革和珠宝
2018/10/16 全球购物
社区道德讲堂实施方案
2014/03/21 职场文书
对外汉语专业大学生职业生涯规划范文
2014/09/13 职场文书
财务会计求职信范文
2015/03/20 职场文书
仓库统计员岗位职责
2015/04/14 职场文书
2015年司机工作总结
2015/04/23 职场文书
Nginx+Windows搭建域名访问环境的操作方法
2022/03/17 Servers
服务器SVN搭建图文安装过程
2022/06/21 Servers