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

本文详细介绍了PHP中如何使用递归调用数组值,并结合示例代码解释了如何用这些值执行指定函数。文章以stripslashes_deep函数为例,展示了如何遍历数组并去除字符串中的反斜杠,接着通过function_deep函数展示了如何处理任意函数在数组上下文中的递归应用。这对于理解PHP中的递归和函数执行机制非常有帮助。
摘要由CSDN通过智能技术生成

这篇文章主要介绍了PHP递归调用数组值并用其执行指定函数的方法,涉及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;

}

代码如下:

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程序设计有所帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值