php數組調用與函數執行的方法

來源:互聯網
上載者:User
這篇文章主要介紹了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;}

代碼如下:

<?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模板與js上傳外掛程式結合實現無重新整理上傳的方法

php數字及數字運算驗證碼

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.