首頁 >後端開發 >php教程 >在php中使用匿名函數 php 函數傳回值 php 陣列 php date函

在php中使用匿名函數 php 函數傳回值 php 陣列 php date函

WBOY
WBOY原創
2016-07-29 08:53:171449瀏覽

老規矩,先上代碼再說話。 在php中使用匿名函數 php 函數傳回值 php 陣列 php date函

<?php


function showArray($cols)
{
&#160; &#160; foreach ($cols as $obj) {
&#160; &#160; &#160; &#160; echo $obj . " ";
&#160; &#160; }
&#160; &#160; echo "<br>";
}


function showObj($obj)
{
    echo $obj . " ";
}


//mswap传入的是引用类型。
function mswap(&$a, &$b)
{
    $tmp = $a;
    $a   = $b;
    $b   = $tmp;
}


function bubbleSort(&$cols)
{
    $len = count($cols);
    for ($i = 0; $i < $len; $i++) {
&#160; &#160; &#160; &#160; for ($j = 1; $j < $len - $i; $j++) {
&#160; &#160; &#160; &#160; &#160; &#160; if ($cols[$j - 1] > $cols[$j]) {
                mswap($cols[$j - 1], $cols[$j]);
            }
        }
    }
}


$data = array(
    8,
    2,
    3,
    9,
    0,
    45,
    35,
    235
);
//排序
bubbleSort($data);
//打印数组
showArray($data);
//使用回调函数依次遍历打印数组
array_map('showObj', $data);
echo "<br>";
//使用匿名函数依次遍历打印数组
array_map(create_function('$obj', 'echo $obj." " ;'), $data);
?>
程式的輸出:


程式碼的功能十分簡單,先初始化一個數組,然後對其排序,最後使用三種不同的方式將其列印輸出。

排序的演算法使用最簡單的冒泡排序,不做贅述。

需要注意的有:

(1)排序函數和交換函數都使用了傳遞引用的方法。若使用傳值方式的話,排序和交換函數不會生效,因為此時函數實際上操作的是參數物件的拷貝。

(2)array_map是php自帶的,其作用是為數組中的每個物件依序呼叫傳入的函數。此種方式稱為回呼。

(3)create_function可以建立一個匿名函數。在最後一個列印範例中,正是將其建立的匿名函數作為array_map的參數使用。

實際上有經驗的程式設計師都知道,不管是C++11還是php中,匿名函數的效率都偏低的。那為什麼還要使用匿名函數呢?為什麼C#和java的新標準也紛紛支持它?

因為有名函數雖然看起來直觀,但是存在著管理的代價。多一個函數,就多一個需要管理的地方。而且對於一個「微型」的程式碼片段而言,單獨為其編寫一個有名函數亦顯得程式碼不夠緊湊。然而這也絕不意味著匿名函數可以被濫用,在程式碼片段過大時,使用匿名函數會嚴重破壞可讀性。對匿名函數的使用要視情況而定。

以上就介紹了在php中使用匿名函數,包含了php,函數方面的內容,希望對PHP教學有興趣的朋友有幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn