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 相关文章推荐
真正的ZIP文件操作类(php)
Jul 21 PHP
php 将bmp图片转为jpg等其他任意格式的图片
Jun 29 PHP
php pack与unpack 摸板字符字符含义
Oct 29 PHP
PHP 解决utf-8和gb2312编码转换问题
Mar 18 PHP
PHP去掉从word直接粘贴过来的没有用格式的函数
Oct 29 PHP
PHP5函数小全(分享)
Jun 06 PHP
PHP的serialize序列化数据以及JSON格式化数据分析
Oct 10 PHP
header与缓冲区之间的深层次分析
Jul 30 PHP
PHP 5.6.11中CURL模块问题的解决方法
Aug 08 PHP
PHP单例模式定义与使用实例详解
Feb 06 PHP
PHP文件后缀不强制为.php方法
Mar 31 PHP
PHP实现与java 通信的插件使用教程
Aug 11 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中最简单的字符串匹配算法
2014/12/16 PHP
PHP实现可自定义样式的分页类
2016/03/29 PHP
PHP批量修改文件名称的方法分析
2017/02/27 PHP
javascript之函数直接量(function(){})()
2007/06/29 Javascript
[HTML/CSS/Javascript]WWTJS
2007/09/25 Javascript
jQuery ready函数滥用分析
2011/02/16 Javascript
jquery ui dialog实现弹窗特效的思路及代码
2013/08/03 Javascript
javascript创建数组之联合数组的使用方法示例
2013/12/26 Javascript
jquery中one()方法的用法实例
2015/01/16 Javascript
JQuery实现简单的服务器轮询效果实例
2016/03/31 Javascript
js实现当鼠标移到表格上时显示这一格全部内容的代码
2016/06/12 Javascript
jQuery插件Validation快速完成表单验证的方式
2016/07/28 Javascript
KnockoutJS 3.X API 第四章之数据控制流component绑定
2016/10/10 Javascript
jQuery中 $ 符号的冲突问题及解决方案
2016/11/04 Javascript
基于jQuery实现的查看全文功能【实用】
2016/12/11 Javascript
vue2.0 中#$emit,$on的使用详解
2017/06/07 Javascript
详解Vue组件实现tips的总结
2017/11/01 Javascript
JS 验证码功能的三种实现方式
2018/11/26 Javascript
原生js实现移动端Touch轮播图的方法步骤
2019/01/03 Javascript
jQuery+PHP+Ajax实现动态数字统计展示功能
2019/12/25 jQuery
详解JavaScript作用域、作用域链和闭包的用法
2020/09/03 Javascript
Vue获取微博授权URL代码实例
2020/11/04 Javascript
[46:48]DOTA2上海特级锦标赛A组小组赛#2 Secret VS CDEC第三局
2016/02/25 DOTA
跟老齐学Python之集合(set)
2014/09/24 Python
python 实现对文件夹中的图像连续重命名方法
2018/10/25 Python
Python编写合并字典并实现敏感目录的小脚本
2019/02/26 Python
python 根据列表批量下载网易云音乐的免费音乐
2020/12/03 Python
Luxplus丹麦:香水和个人护理折扣
2018/04/23 全球购物
学生自我鉴定模板
2013/12/30 职场文书
幼儿园消防安全制度
2014/01/26 职场文书
大专毕业生求职信
2014/07/05 职场文书
2014年军人思想汇报范文
2014/10/12 职场文书
实习指导教师评语
2014/12/30 职场文书
2015年国际护士节演讲稿
2015/03/18 职场文书
《夜莺的歌声》教学反思
2016/02/22 职场文书
日本动漫十大公认神作:第五现已全网禁播,《死亡笔记》在榜
2022/03/18 日漫