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