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 include_path设置技巧分享
Jul 03 PHP
使用PHP静态变量当缓存的方法
Nov 13 PHP
thinkphp四种url访问方式详解
Nov 28 PHP
PHP函数实现从一个文本字符串中提取关键字的方法
Jul 01 PHP
php-redis中的sort排序函数总结
Jul 08 PHP
PHP下载生成的csv文件及问题总结
Aug 06 PHP
总结PHP中DateTime的常用方法
Aug 11 PHP
PHP sleep()函数, usleep()函数
Aug 25 PHP
PHP实现的二分查找算法实例分析
Dec 19 PHP
PHP xpath()函数讲解
Feb 11 PHP
PHP join()函数用法与实例讲解
Mar 11 PHP
thinkphp5框架API token身份验证功能示例
May 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
PHP 的 __FILE__ 常量
2007/01/15 PHP
ThinkPHP3.1新特性之Action参数绑定
2014/06/19 PHP
从零开始学YII2框架(四)扩展插件yii2-kartikgii
2014/08/20 PHP
PHP convert_cyr_string()函数讲解
2019/02/13 PHP
用于table内容排序
2006/07/21 Javascript
编写可维护面向对象的JavaScript代码[翻译]
2011/02/12 Javascript
javascript针对DOM的应用分析(三)
2012/04/15 Javascript
兼容IE和FF的图片上传前预览js代码
2013/05/28 Javascript
javascript 3d 逐侦产品展示(核心精简)
2014/03/26 Javascript
jQuery+jsp实现省市县三级联动效果(附源码)
2015/12/03 Javascript
win7下安装配置node.js+express开发环境
2015/12/06 Javascript
JavaScript实现相册弹窗功能(zepto.js)
2016/06/21 Javascript
NodeJS远程代码执行
2016/08/28 NodeJs
JavaScript实现省市县三级级联特效
2017/05/16 Javascript
webpack踩坑之路图片的路径与打包
2017/09/05 Javascript
angular.js和vue.js中实现函数去抖示例(debounce)
2018/01/18 Javascript
BootStrap模态框闪退问题实例代码详解
2018/12/10 Javascript
JS数组求和的常用方法实例小结
2019/01/07 Javascript
node.js微信小程序配置消息推送的实现
2019/02/13 Javascript
配置一个vue3.0项目的完整步骤
2019/04/26 Javascript
vue实现行列转换的一种方法
2019/08/06 Javascript
JS异步处理的进化史深入讲解
2019/08/25 Javascript
JavaScript设计模式--简单工厂模式定义与应用案例详解
2020/05/23 Javascript
jQuery实现鼠标滑动切换图片
2020/05/27 jQuery
Vue项目利用axios请求接口下载excel
2020/11/17 Vue.js
Python进度条实时显示处理进度的示例代码
2018/01/30 Python
python selenium执行所有测试用例并生成报告的方法
2019/02/13 Python
由面试题加深对Django的认识理解
2019/07/19 Python
python修改字典键(key)的方法
2019/08/05 Python
goodhealth官方海外旗舰店:新西兰国民营养师
2017/12/15 全球购物
护理工作感言
2014/01/16 职场文书
个人承诺书怎么写
2014/05/24 职场文书
关于成立领导小组的通知
2015/04/23 职场文书
委托开发合同书(标准版)
2019/08/07 职场文书
JS ES6异步解决方案
2021/04/29 Javascript
Navicat Premium自定义 sql 标签的创建方式
2022/09/23 数据库