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批量删除数据
Jan 18 PHP
windows下升级PHP到5.3.3的过程及注意事项
Oct 12 PHP
php学习笔记 数组遍历实现代码
Jun 09 PHP
PHP递归返回值时出现的问题解决办法
Feb 19 PHP
PHP 使用MySQL管理Session的回调函数详解
Jun 21 PHP
php防止伪造的数据从URL提交方法
Jun 27 PHP
php打印输出棋盘的实现方法
Dec 23 PHP
PHP文件缓存类实现代码
Oct 26 PHP
PHP使用curl_multi实现并发请求的方法示例
Apr 29 PHP
Laravel框架路由和控制器的绑定操作方法
Jun 12 PHP
ThinkPHP框架实现FTP图片上传功能示例
Apr 08 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
Zend Framework教程之模型Model基本规则和使用方法
2016/03/04 PHP
PHP文件管理之实现网盘及压缩包的功能操作
2017/09/20 PHP
让回调函数 showResponse 也带上参数的代码
2007/08/13 Javascript
window.parent调用父框架时 ie跟火狐不兼容问题
2009/07/30 Javascript
JavaScript判断窗口是否最小化的代码(跨浏览器)
2010/08/01 Javascript
关于递归运算的顺序测试代码
2011/11/30 Javascript
jquery 插件学习(一)
2012/08/06 Javascript
jquery选择器原理介绍($()使用方法)
2014/03/25 Javascript
Vue数据驱动模拟实现3
2017/01/11 Javascript
总结JavaScript在IE9之前版本中内存泄露问题
2018/04/28 Javascript
浅析Vue.js 中的条件渲染指令
2018/11/19 Javascript
进一步探究Python中的正则表达式
2015/04/28 Python
python实用代码片段收集贴
2015/06/03 Python
python自动zip压缩目录的方法
2015/06/28 Python
Python正则替换字符串函数re.sub用法示例
2017/01/19 Python
python多进程间通信代码实例
2019/09/30 Python
Python如何在DataFrame增加数值
2020/02/14 Python
python对接ihuyi实现短信验证码发送
2020/05/10 Python
如何创建一个Flask项目并进行简单配置
2020/11/18 Python
美国祛痘、抗衰老药妆品牌:Murad
2016/08/27 全球购物
英国家庭珠宝商:T. H. Baker
2018/02/08 全球购物
迷你唐卡软皮鞋:Minnetonka Moccasin
2018/05/01 全球购物
New Balance加拿大官方网站:运动鞋和健身服装
2018/11/19 全球购物
AVI-8手表美国官方商店:AVI-8 USA
2019/04/10 全球购物
德国珠宝和配件商店:Styleserver
2021/02/23 全球购物
自动化工程专业个人应聘自荐信
2013/09/26 职场文书
工程班组长岗位职责
2013/12/30 职场文书
圣诞节活动策划方案
2014/06/09 职场文书
科级干部群众路线教育实践活动个人对照检查材料
2014/09/19 职场文书
学生未请假就回家检讨书
2014/09/22 职场文书
党的群众路线教育实践活动个人对照检查材料(校长)
2014/11/05 职场文书
通知的格式范文
2015/04/27 职场文书
2016庆祝教师节新闻稿
2015/11/25 职场文书
linux中nohup和后台运行进程查看及终止
2021/06/24 Python
MySQL优化常用的19种有效方法(推荐!)
2022/03/17 MySQL
浅析Python OpenCV三种滤镜效果
2022/04/11 Python