PHP递归调用数组值并用其执行指定函数的方法

作者:代码成湿 时间:2023-09-05 15:35:04 

本文实例讲述了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,数组,函数
0
投稿

猜你喜欢

  • nacos只支持mysql的原因分析

    2024-01-17 21:11:23
  • matplotlib 对坐标的控制,加图例注释的操作

    2021-06-12 16:28:46
  • 详解用Python实现自动化监控远程服务器

    2021-02-14 15:50:57
  • Python学习小技巧之利用字典的默认行为

    2021-10-10 23:48:29
  • 一些实用性较高的js方法

    2024-04-29 13:37:40
  • 如何取得MYSQL中ENUM列的全部可能值

    2009-07-30 08:53:00
  • 使用XML配置c3p0数据库连接池

    2024-01-22 11:15:02
  • css网页下拉菜单制作方法(2):初步实现

    2007-02-03 11:39:00
  • PHP获取一个字符串中间一部分字符的方法

    2024-03-08 20:17:39
  • jQuery 选择器的使用

    2008-01-21 13:07:00
  • uni-app的基本使用教程

    2024-05-11 09:15:18
  • python logging设置level失败的解决方法

    2022-03-23 13:54:40
  • Python的Django框架中自定义模版标签的示例

    2022-10-31 22:28:56
  • MySQL UPDATE 语句的非标准实现代码

    2024-01-16 19:08:57
  • 用ASP实现在线压缩与解压缩

    2007-09-29 12:13:00
  • JS在IE和FireFox之间常用函数的区别小结

    2024-04-16 09:54:54
  • Python数学建模StatsModels统计回归可视化示例详解

    2023-10-09 02:16:54
  • Python统计列表元素出现次数的方法示例

    2021-03-06 00:43:23
  • vue项目中api接口管理总结

    2024-04-30 10:42:44
  • CSS 3入门

    2009-04-19 13:00:00
  • asp之家 网络编程 m.aspxhome.com