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下MAIL的另一解决方案
Oct 09 PHP
PHP+javascript液晶时钟
Oct 09 PHP
用PHP的超级变量$_POST获取HTML表单(HTML Form) 数据
May 07 PHP
php 字符串替换的方法
Jan 10 PHP
用PHP读取超大文件的实例代码
Apr 01 PHP
PHP用strstr()函数阻止垃圾评论(通过判断a标记)
Sep 28 PHP
php初始化对象和析构函数的简单实例
Mar 11 PHP
php常用字符串处理函数实例分析
Nov 22 PHP
PHP使用strtotime计算两个给定日期之间天数的方法
Mar 18 PHP
thinkphp自带验证码全面解析
Sep 18 PHP
PHP实践教程之过滤、验证、转义与密码详解
Jul 24 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自带的进位制之间的转换函数
2013/06/08 PHP
PHP中怎样保持SESSION不过期 原理及方案介绍
2013/08/08 PHP
php 字符串中的\n换行符无效、不能换行的解决方法
2014/04/02 PHP
使用PHP处理数据库数据如何将数据返回客户端并显示当前状态
2016/02/16 PHP
Android App中DrawerLayout抽屉效果的菜单编写实例
2016/03/21 PHP
PHP用mysql_insert_id()函数获得刚插入数据或当前发布文章的ID
2016/11/25 PHP
利用js获取服务器时间的两个简单方法
2010/01/08 Javascript
js操纵跨frame的三级联动select下拉选项实例介绍
2013/05/19 Javascript
JS防止用户多次提交的简单代码
2013/08/01 Javascript
《JavaScript高级编程》学习笔记之object和array引用类型
2015/11/01 Javascript
下雪了 javascript实现雪花飞舞
2020/08/02 Javascript
常用的几个JQuery代码片段
2017/03/13 Javascript
Vue组件tree实现树形菜单
2017/04/13 Javascript
详解如何让InstantClick兼容MathJax、百度统计等
2017/09/12 Javascript
vue 2.1.3 实时显示当前时间,每秒更新的方法
2018/09/16 Javascript
深入理解Antd-Select组件的用法
2020/02/25 Javascript
在vue中created、mounted等方法使用小结
2020/07/21 Javascript
python结合opencv实现人脸检测与跟踪
2015/06/08 Python
使用Python脚本实现批量网站存活检测遇到问题及解决方法
2016/10/11 Python
Python使用requests发送POST请求实例代码
2018/01/25 Python
Django开发中复选框用法示例
2018/03/20 Python
TensorFlow实现模型评估
2018/09/07 Python
Python中@property的理解和使用示例
2019/06/11 Python
pandas 中对特征进行硬编码和onehot编码的实现
2019/12/20 Python
Python TCPServer 多线程多客户端通信的实现
2019/12/31 Python
Python vtk读取并显示dicom文件示例
2020/01/13 Python
五个2015 年最佳HTML5 框架
2015/11/11 HTML / CSS
英国著名音像制品和图书游戏购物网站:Zavvi
2016/08/04 全球购物
数控专业个人求职信范例
2013/11/29 职场文书
超市总经理岗位职责
2014/02/02 职场文书
法院授权委托书范文
2014/08/02 职场文书
12.4全国法制宣传日活动总结
2014/11/01 职场文书
运动会表扬稿
2015/01/16 职场文书
2015毕业实习推荐信
2015/03/23 职场文书
2016年公务员六五普法心得体会
2016/01/21 职场文书
导游词之珠海轮廓
2019/10/25 职场文书