function.create-function.html
来自「php的帮助文档,涉及到PHP的案例和基本语法,以及实际应用内容」· HTML 代码 · 共 223 行 · 第 1/2 页
HTML
223 行
</b></p> <div class="example-contents"><div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB"><?php<br /></span><span style="color: #007700">function </span><span style="color: #0000BB">process</span><span style="color: #007700">(</span><span style="color: #0000BB">$var1</span><span style="color: #007700">, </span><span style="color: #0000BB">$var2</span><span style="color: #007700">, </span><span style="color: #0000BB">$farr</span><span style="color: #007700">)<br />{<br /> foreach (</span><span style="color: #0000BB">$farr </span><span style="color: #007700">as </span><span style="color: #0000BB">$f</span><span style="color: #007700">) {<br /> echo </span><span style="color: #0000BB">$f</span><span style="color: #007700">(</span><span style="color: #0000BB">$var1</span><span style="color: #007700">, </span><span style="color: #0000BB">$var2</span><span style="color: #007700">) . </span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br /> }<br />}<br /><br /></span><span style="color: #FF8000">// create a bunch of math functions<br /></span><span style="color: #0000BB">$f1 </span><span style="color: #007700">= </span><span style="color: #DD0000">'if ($a >=0) {return "b*a^2 = ".$b*sqrt($a);} else {return false;}'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$f2 </span><span style="color: #007700">= </span><span style="color: #DD0000">"return \"min(b^2+a, a^2,b) = \".min(\$a*\$a+\$b,\$b*\$b+\$a);"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$f3 </span><span style="color: #007700">= </span><span style="color: #DD0000">'if ($a > 0 && $b != 0) {return "ln(a)/b = ".log($a)/$b; } else { return false; }'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$farr </span><span style="color: #007700">= array(<br /> </span><span style="color: #0000BB">create_function</span><span style="color: #007700">(</span><span style="color: #DD0000">'$x,$y'</span><span style="color: #007700">, </span><span style="color: #DD0000">'return "some trig: ".(sin($x) + $x*cos($y));'</span><span style="color: #007700">),<br /> </span><span style="color: #0000BB">create_function</span><span style="color: #007700">(</span><span style="color: #DD0000">'$x,$y'</span><span style="color: #007700">, </span><span style="color: #DD0000">'return "a hypotenuse: ".sqrt($x*$x + $y*$y);'</span><span style="color: #007700">),<br /> </span><span style="color: #0000BB">create_function</span><span style="color: #007700">(</span><span style="color: #DD0000">'$a,$b'</span><span style="color: #007700">, </span><span style="color: #0000BB">$f1</span><span style="color: #007700">),<br /> </span><span style="color: #0000BB">create_function</span><span style="color: #007700">(</span><span style="color: #DD0000">'$a,$b'</span><span style="color: #007700">, </span><span style="color: #0000BB">$f2</span><span style="color: #007700">),<br /> </span><span style="color: #0000BB">create_function</span><span style="color: #007700">(</span><span style="color: #DD0000">'$a,$b'</span><span style="color: #007700">, </span><span style="color: #0000BB">$f3</span><span style="color: #007700">)<br /> );<br /><br />echo </span><span style="color: #DD0000">"\nUsing the first array of anonymous functions\n"</span><span style="color: #007700">;<br />echo </span><span style="color: #DD0000">"parameters: 2.3445, M_PI\n"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">process</span><span style="color: #007700">(</span><span style="color: #0000BB">2.3445</span><span style="color: #007700">, </span><span style="color: #0000BB">M_PI</span><span style="color: #007700">, </span><span style="color: #0000BB">$farr</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">// now make a bunch of string processing functions<br /></span><span style="color: #0000BB">$garr </span><span style="color: #007700">= array(<br /> </span><span style="color: #0000BB">create_function</span><span style="color: #007700">(</span><span style="color: #DD0000">'$b,$a'</span><span style="color: #007700">, </span><span style="color: #DD0000">'if (strncmp($a, $b, 3) == 0) return "** \"$a\" '</span><span style="color: #007700">.<br /> </span><span style="color: #DD0000">'and \"$b\"\n** Look the same to me! (looking at the first 3 chars)";'</span><span style="color: #007700">),<br /> </span><span style="color: #0000BB">create_function</span><span style="color: #007700">(</span><span style="color: #DD0000">'$a,$b'</span><span style="color: #007700">, </span><span style="color: #DD0000">'; return "CRCs: " . crc32($a) . " , ".crc32(b);'</span><span style="color: #007700">),<br /> </span><span style="color: #0000BB">create_function</span><span style="color: #007700">(</span><span style="color: #DD0000">'$a,$b'</span><span style="color: #007700">, </span><span style="color: #DD0000">'; return "similar(a,b) = " . similar_text($a, $b, &$p) . "($p%)";'</span><span style="color: #007700">)<br /> );<br />echo </span><span style="color: #DD0000">"\nUsing the second array of anonymous functions\n"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">process</span><span style="color: #007700">(</span><span style="color: #DD0000">"Twas brilling and the slithy toves"</span><span style="color: #007700">, </span><span style="color: #DD0000">"Twas the night"</span><span style="color: #007700">, </span><span style="color: #0000BB">$garr</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?></span></span></code></div> </div> <div class="example-contents"><p>The above example will output:</p></div> <div class="example-contents"><pre><div class="cdata"><pre>Using the first array of anonymous functionsparameters: 2.3445, M_PIsome trig: -1.6291725057799a hypotenuse: 3.9199852871011b*a^2 = 4.8103313314525min(b^2+a, a^2,b) = 8.6382729035898ln(a/b) = 0.27122299212594Using the second array of anonymous functions** "Twas the night" and "Twas brilling and the slithy toves"** Look the same to me! (looking at the first 3 chars)CRCs: -725381282 , 1908338681similar(a,b) = 11(45.833333333333%)</pre></div> </pre></div> </div> </p> <p class="para"> But perhaps the most common use for of lambda-style (anonymous) functions is to create callback functions, for example when using <a href="function.array-walk.html" class="function">array_walk()</a> or <a href="function.usort.html" class="function">usort()</a> </p> <p class="para"> <div class="example"> <p><b>Example #3 Using anonymous functions as callback functions</b></p> <div class="example-contents"><div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB"><?php<br />$av </span><span style="color: #007700">= array(</span><span style="color: #DD0000">"the "</span><span style="color: #007700">, </span><span style="color: #DD0000">"a "</span><span style="color: #007700">, </span><span style="color: #DD0000">"that "</span><span style="color: #007700">, </span><span style="color: #DD0000">"this "</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">array_walk</span><span style="color: #007700">(</span><span style="color: #0000BB">$av</span><span style="color: #007700">, </span><span style="color: #0000BB">create_function</span><span style="color: #007700">(</span><span style="color: #DD0000">'&$v,$k'</span><span style="color: #007700">, </span><span style="color: #DD0000">'$v = $v . "mango";'</span><span style="color: #007700">));<br /></span><span style="color: #0000BB">print_r</span><span style="color: #007700">(</span><span style="color: #0000BB">$av</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?></span></span></code></div> </div> <div class="example-contents"><p>The above example will output:</p></div> <div class="example-contents"><pre><div class="cdata"><pre>Array( [0] => the mango [1] => a mango [2] => that mango [3] => this mango)</pre></div> </pre></div> <div class="example-contents"><p> an array of strings ordered from shorter to longer </p></div> <div class="example-contents"><div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB"><?php<br /><br />$sv </span><span style="color: #007700">= array(</span><span style="color: #DD0000">"small"</span><span style="color: #007700">, </span><span style="color: #DD0000">"larger"</span><span style="color: #007700">, </span><span style="color: #DD0000">"a big string"</span><span style="color: #007700">, </span><span style="color: #DD0000">"it is a string thing"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">print_r</span><span style="color: #007700">(</span><span style="color: #0000BB">$sv</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">?></span></span></code></div> </div> <div class="example-contents"><p>The above example will output:</p></div> <div class="example-contents"><pre><div class="cdata"><pre>Array( [0] => small [1] => larger [2] => a big string [3] => it is a string thing)</pre></div> </pre></div> <div class="example-contents"><p> sort it from longer to shorter </p></div> <div class="example-contents"><div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB"><?php<br /><br />usort</span><span style="color: #007700">(</span><span style="color: #0000BB">$sv</span><span style="color: #007700">, </span><span style="color: #0000BB">create_function</span><span style="color: #007700">(</span><span style="color: #DD0000">'$a,$b'</span><span style="color: #007700">,</span><span style="color: #DD0000">'return strlen($b) - strlen($a);'</span><span style="color: #007700">));<br /></span><span style="color: #0000BB">print_r</span><span style="color: #007700">(</span><span style="color: #0000BB">$sv</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">?></span></span></code></div> </div> <div class="example-contents"><p>The above example will output:</p></div> <div class="example-contents"><pre><div class="cdata"><pre>Array( [0] => it is a string thing [1] => a big string [2] => larger [3] => small)</pre></div> </pre></div> </div> </p> </div></div><hr /><div style="text-align: center;"> <div class="prev" style="text-align: left; float: left;"><a href="function.call-user-func.html">call_user_func</a></div> <div class="next" style="text-align: right; float: right;"><a href="function.func-get-arg.html">func_get_arg</a></div> <div class="up"><a href="ref.funchand.html">Function handling Functions</a></div> <div class="home"><a href="index.html">PHP Manual</a></div></div></body></html>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?