コールバック関数について教えてください
皆さんこんにちは、PHPの配列の動画を見たらコールバック関数について出てきましたが、よくわかりませんでした。
専門家はそれを説明できますか?
function dump($arr){
echo "
";<br /> print_r($arr);<br /> } <br /> $arr1 = array("url"=>) ;"bbs.houdunwang.com","name"=>"バックエンド ネットワーク");<br> $arr2 = array("url2"=>"bbs.houdunwang.com","name"=>"バックエンド ネットワーク");<br> $arr3 = array("weburl111"=>"bbs.houdunwang.com");<br> $arr0 = array_intersect_uassoc($arr1,$arr2,a);<br> 関数 a ($k1,$k2){<br> if($k1 === $k2){<br> return 0;<br> }elseif( $k1>$k2){<br> return 1;<br> }else{<br> return -1;<br> } }<br> dump($arr0);<br><br>このコードの $k1 と $k2 は何を表しますか?コールバック関数の戻り値0 1 -1は配列の判定においてどのような役割を果たしているのでしょうか? ? <br><br><font color="#e78608">-----解決策--------------------------------</font><br>並べ替えアルゴリズムは実際には 2 つの部分に抽象化できます: <br>1. 並べ替えアルゴリズム自体、つまり要素が比較される順序 <br> 2. 比較ルールは 2 つの要素を提供します。そして、どちらが大きくてどちらが小さいかを教えてください...<br><br> 通常の並べ替えは数値型の直接比較であるため、大なり小なり比較を直接使用できます。<br><br>uassoc ファミリー関数は、カスタムのサイズ比較ルールを提供します。<br>このタイプの関数は、ソート アルゴリズムの最初の部分を実装します。2 番目の部分は、2 つの要素をプロセスに抽象化します。 <br><br>あなたが指定した例では、関数は 2 つのパラメーターを受け取ります。<br><br>この型の基本的な実装です。コールバックの内容は次のとおりです: <br> (シナリオ例: 最大の配列値を持つ要素を検索します) <br></p> <dl class="code">PHP コード<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"> 関数 ud_max($array, $callback) { if(empty($array)) は false を返します。 $max = next($array); foreach($array as $element) $max = $callback($max, $element); $max を返します。 } 関数 ud_compare1($max, $ele) { return ($max * $max > $ele * $ele) ? $max : $ele; } 関数 ud_compare2($max, $ele) { return sqrt($max) > sqrt($ele) ? $max : $ele; // 平方根関数の名前が sqrt であるかどうかはわかりません。 } <br><font color="#e78608">------解決策---------</font><br>コールバック関数を自分で書くとわかりやすい通常、関数は自分自身を直接呼び出すのではなく、他の関数を呼び出します...少し複雑です<br><br>たとえば、PHP の関数 call_user_func_array<br><br>マニュアルで例を参照できます<br>< ?php<br />function foobar($arg, $arg2) {<br /> echo __FUNCTION__, " $arg と $arg2n を取得しました";<br />}<br />class foo {<br /> function bar($arg, $ arg2) { <br /> echo __METHOD__, " $arg と $arg2n を取得しました";<br /> }<br />}<br /><br /><br />// 2 つの引数で foobar() 関数を呼び出します<br />call_user_func_array ("foobar ", array("one", "two"));<br /><br />// 2 つの引数を指定して $foo->bar() メソッドを呼び出します<br />$foo = new foo;<br />call_user_func_array( array($foo, "bar"), array("three", "four"));<br />?> <br><font color="#e78608">------解決策----------------------</font><br>コールバック関数は関数ポインタを通じて呼び出される関数ですつまり、コールバック関数は別の関数によってパラメーターとして呼び出されます。 <br><br><br>//このコードの $k1 と $k2 は何を表しますか?コールバック関数の戻り値0 1 -1は配列の判定においてどのような役割を果たしているのでしょうか? ? <br>コードの場合、a() 関数はコールバック関数であり、2 つの戻り値のサイズは関連しています。 <br>$k1,$k2 は関数の仮パラメータです。 <br>コールバック関数の戻り値は、関数を呼び出す関数のソート規則 (つまり、関数をソートするために必要な規則) としての役割を果たします。 <br><br> <div class="clear"></div>