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

本文实例讲述了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递归调用数组值并用其执行指定函数的方法

郑重声明:本网站发布的内容(图片、视频和文字)以及用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服