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