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的计数器程序
Oct 09 PHP
自定义php类(查找/修改)xml文档
Mar 26 PHP
Smarty foreach控制循环次数的实现详解
Jul 03 PHP
用PHP解决的一个栈的面试题
Jul 02 PHP
9个实用的PHP代码片段分享
Jan 22 PHP
[原创]PHP实现逐行删除文件右侧空格的方法
Dec 25 PHP
Laravel执行migrate命令提示:No such file or directory的解决方法
Mar 16 PHP
Thinkphp3.2.3整合phpqrcode生成带logo的二维码
Jul 21 PHP
PHP7.1新功能之Nullable Type用法分析
Sep 26 PHP
Yii2――使用数据库操作汇总(增删查改、事务)
Dec 19 PHP
yii2学习教程之5种内置行为类详解
Aug 03 PHP
php数据序列化测试实例详解
Aug 12 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的Registry机制的使用说明
2013/05/02 PHP
php实现的通用图片处理类
2015/03/24 PHP
PHPMAILER实现PHP发邮件功能
2018/04/18 PHP
基于Jquery的表格隔行换色,移动换色,点击换色插件
2010/12/22 Javascript
javascript中日期转换成时间戳的小例子
2013/03/21 Javascript
jQuery setTimeout()函数使用方法
2013/04/07 Javascript
深入探寻javascript定时器
2015/01/02 Javascript
js简单实现图片延迟加载的方法
2016/07/19 Javascript
JS给Array添加是否包含字符串的简单方法
2016/10/29 Javascript
Bootstrap 表单验证formValidation 实现远程验证功能
2017/05/17 Javascript
360提示[高危]使用存在漏洞的JQuery版本的解决方法
2017/10/27 jQuery
微信小程序自定义tab实现多层tab嵌套功能
2018/06/15 Javascript
Angular6封装http请求的步骤详解
2018/08/13 Javascript
快速解决vue动态绑定多个class的官方实例语法无效的问题
2018/09/05 Javascript
Vue.js 中的 v-cloak 指令及使用详解
2018/11/19 Javascript
Vue2.0使用嵌套路由实现页面内容切换/公用一级菜单控制页面内容切换(推荐)
2019/05/08 Javascript
一篇超完整的Vue新手入门指导教程
2020/11/18 Vue.js
python网络编程学习笔记(九):数据库客户端 DB-API
2014/06/09 Python
Python Socket编程入门教程
2014/07/11 Python
python实现按行切分文本文件的方法
2016/04/18 Python
详解Python3 中hasattr()、getattr()、setattr()、delattr()函数及示例代码数
2018/04/18 Python
django项目中使用手机号登录的实例代码
2019/08/15 Python
Django之模板层的实现代码
2019/09/09 Python
python处理excel绘制雷达图
2019/10/18 Python
Python 实现劳拉游戏的实例代码(四连环、重力四子棋)
2021/03/03 Python
腾讯技术类校园招聘笔试试题
2014/05/06 面试题
一道写SQL的面试题和答案
2013/11/19 面试题
初一学生期末评语
2014/04/24 职场文书
2015元旦标语横幅
2014/12/09 职场文书
行政助理岗位职责
2015/02/10 职场文书
安全生产警示教育活动总结
2015/05/09 职场文书
医务人员医德医风心得体会
2016/01/25 职场文书
如何书写读后感?(附范文)
2019/07/26 职场文书
教你如何让spark sql写mysql的时候支持update操作
2022/02/15 MySQL
苹果可能正在打击不进行更新的 App
2022/04/24 数码科技
MySQL中dd::columns表结构转table过程及应用详解
2022/09/23 MySQL