PHP递归调用数组值并用其执行指定函数的方法
本文实例讲述了PHP递归调用数组值并用其执行指定函数的方法。分享给大家供大家参考。具体分析如下:
以下为wordpress原代码,为了偷懒,简单修改一下以适用其它函数
/**
*Navigatesthroughanarrayandremovesslashesfromthevalues.
*
*Ifanarrayispassed,thearray_map()functioncausesacallbacktopassthe
*valuebacktothefunction.Theslashesfromthisvaluewillremoved.
*
*@since2.0.0
*
*@parammixed$valueThevaluetobestripped.
*@returnmixedStrippedvalue.
*/
functionstripslashes_deep($value){
if(is_array($value)){
$value=array_map('stripslashes_deep',$value);
}elseif(is_object($value)){
$vars=get_object_vars($value);
foreach($varsas$key=>$data){
$value->{$key}=stripslashes_deep($data);
}
}elseif(is_string($value)){
$value=stripslashes($value);
}
return$value;
}
代码如下:
<?php
functionfunction_deep($function,$value){
try{
if(!function_exists($function)){
$error='"'.$function.'"isundefined';
thrownewException($error);
}
}catch(Exception$e){
echo'Caughtexception:',$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($varsas$key=>$data){
$value->{$key}=function_deep($function,$data);
}
}elseif(is_string($value)){
$value=call_user_func($function,$value);
}
return$value;
}
$arr=array(
"I'mbean",
"I'mbean",
array("I'mbean","I'mbean")
);
var_dump(function_deep("addslashes",$arr));
//输出结果
//array(size=3)
//0=>string'I\'mbean'(length=9)
//1=>string'I\'mbean'(length=9)
//2=>
//array(size=2)
//0=>string'I\'mbean'(length=9)
//1=>string'I\'mbean'(length=9)
?>
希望本文所述对大家的php程序设计有所帮助。