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(1)
Oct 09 PHP
快速开发一个PHP扩展图文教程
Dec 12 PHP
simplehtmldom Doc api帮助文档
Mar 26 PHP
有关于PHP中常见数据类型的汇总分享
Jan 06 PHP
使用php语句将数据库*.sql文件导入数据库
May 05 PHP
Yii基于数组和对象的Model查询技巧实例详解
Dec 28 PHP
PHP实现随机数字、字母的验证码功能
Aug 01 PHP
PHP Redis扩展无法加载的问题解决方法
Aug 22 PHP
php+js实现的无刷新下载文件功能示例
Aug 23 PHP
Laravel框架创建路由的方法详解
Sep 04 PHP
Laravel Eloquent ORM 实现查询表中指定的字段
Oct 17 PHP
Laravel实现通过blade模板引擎渲染视图
Oct 25 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下几个常用的去空、分组、调试数组函数
2009/02/22 PHP
php连接数据库代码应用分析
2011/05/29 PHP
用JavaScript和注册表脚本实现右键收藏Web页选中文本
2007/01/28 Javascript
关于javascript DOM事件模型的两件事
2010/07/22 Javascript
jQuery:节点(插入,复制,替换,删除)操作
2013/03/04 Javascript
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
2016/12/14 Javascript
Nodejs 获取时间加手机标识的32位标识实现代码
2017/03/07 NodeJs
ES6新特性:使用export和import实现模块化详解
2017/07/31 Javascript
jQuery初级教程之网站品牌列表效果
2017/08/02 jQuery
详解node服务器中打开html文件的两种方法
2017/09/18 Javascript
vue iview组件表格 render函数的使用方法详解
2018/03/15 Javascript
详解Angularjs 自定义指令中的数据绑定
2018/07/19 Javascript
koa2使用ejs和nunjucks作为模板引擎的使用
2018/11/27 Javascript
JS使用canvas中的measureText方法测量字体宽度示例
2019/02/02 Javascript
vue滚动插件better-scroll使用详解
2019/10/18 Javascript
javascript实现雪花飘落效果
2020/08/19 Javascript
python基础教程之序列详解
2014/08/29 Python
深入讲解Java编程中类的生命周期
2016/02/05 Python
Python运维自动化之nginx配置文件对比操作示例
2018/08/29 Python
有关Python的22个编程技巧
2018/08/29 Python
Django认证系统实现的web页面实现代码
2019/08/12 Python
Django与pyecharts结合的实例代码
2020/05/13 Python
Python调用ffmpeg开源视频处理库,批量处理视频
2020/11/16 Python
英国人最爱的饰品网站:Accessorize
2016/08/22 全球购物
俄罗斯第一家多品牌在线奢侈品精品店:Aizel.ru
2020/09/06 全球购物
如何拷贝一整个Java对象,包括它的状态
2013/12/27 面试题
父母对孩子的寄语
2014/04/09 职场文书
请假条格式范文
2014/04/10 职场文书
表彰大会策划方案
2014/05/13 职场文书
聘用意向书
2014/07/29 职场文书
小学生我的梦想演讲稿
2014/08/21 职场文书
开展批评与自我批评发言稿
2014/10/16 职场文书
2015年班级元旦晚会活动总结
2014/11/28 职场文书
求职信格式范文
2015/03/19 职场文书
2016年班主任新年寄语
2015/08/18 职场文书
SQLServer中exists和except用法介绍
2021/12/04 SQL Server