首页 > 开发 > PHP > 正文

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

2024-05-04 22:38:00
字体:
来源:转载
供稿:网友

本文实例讲述了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程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表