古いルール、最初にコードを書いてから話す。
<?php function showArray($cols) {     foreach ($cols as $obj) {         echo $obj . " ";     }     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++) {         for ($j = 1; $j < $len - $i; $j++) {             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); ?>
このコードの機能は非常に単純で、最初に配列を初期化し、次にそれを並べ替え、最後に 3 つの異なる方法で出力します。
ソートアルゴリズムは最も単純なバブルソートを使用しますが、詳細は説明しません。
注意点は以下のとおりです。
(1) ソート関数、スワップ関数ともに参照の受け渡し方式を採用しています。値渡しメソッドを使用する場合、この時点では関数は実際にはパラメーター オブジェクトのコピーに対して動作するため、並べ替え関数と交換関数は有効になりません。
(2) array_map は PHP に付属しており、その機能は、配列内の各オブジェクトに対して渡された関数を順番に呼び出すことです。このメソッドはコールバックと呼ばれます。
(3) create_function は匿名関数を作成できます。最後に出力した例では、作成した匿名関数が array_map への引数として使用されます。
実際、経験豊富なプログラマは、C++11 と PHP の両方で匿名関数が非効率であることを知っています。では、なぜ匿名関数を使用するのでしょうか? C# と Java の新しい標準もそれをサポートしているのはなぜですか?
有名な機能は直感的に見えますが、管理コストがかかるからです。機能が 1 つ増えると、管理する場所が 1 つ増えることになります。そして、「マイクロ」コードフラグメントの場合、名前付き関数を単独で記述することは十分にコンパクトではないようです。ただし、コードフラグメントが大きすぎる場合、匿名関数を使用すると可読性が著しく損なわれる可能性があるという意味ではありません。匿名関数の使用は状況に応じて異なります。
上記では、PHP と関数を含む、PHP での匿名関数の使用方法を紹介しました。PHP チュートリアルに興味のある友人に役立つことを願っています。