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

前端技术 2023/09/05 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程序设计有所帮助。

本文地址:https://www.stayed.cn/item/12991

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。