ホームページ >バックエンド開発 >PHPチュートリアル >カスタム関数の条件付き実行に関するアルゴリズムは困難です。ありがとう

カスタム関数の条件付き実行に関するアルゴリズムは困難です。ありがとう

WBOY
WBOYオリジナル
2016-06-13 13:09:55865ブラウズ

条件に基づいてカスタム関数を実行するアルゴリズムを見つけるのは困難です。ありがとう!

PHP コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->在PHP中,求一算法,麻烦各位了,如下:
$arr0,$arr1及$arr2,$arr3,元素个数是固定的4,不会有变化
$arr0=array('','wc1','','wc3');//此数组了定义了,要执行那些函数及方法
$arr1=array('wc0','wc1','wc2','');
$arr2=array('wc0','','','wc3');

共有自定义函数4个,分别是
function wc0(){
}
function wc1(){
}
function wc2(){
}
function wc3(){
}
问题开始:

对于$arr0,$arr1,$arr2几个数组,当其元素不为空时,便执行相应的自定义函数。举例如下:
当遇到$arr0=array('','wc1','','wc3');执行2个函数:wc1() 与wc3()
当遇到$arr1=array('wc0','wc1','wc2','');执行3个函数,wc0(),wc1(),wc2()
当遇到$arr2=array('wc0','','','wc3');执行2个函数,wc0(),wc3()
.......

您看出规律了吗?对就是这个样子,我现在要改写成一个函数,求算法。即
当遇到$arr,便执行XXXX



------解決策------ -
PHP コード

関数 wc0(){
    エコー「wc0n」;
}
関数 wc1(){
    エコー「wc1n」;
}
関数 wc2(){
    エコー「wc2n」;
}
関数 wc3(){
    「wc3n」をエコーし​​ます。
}
$arr=array('','wc1','','wc3');
foreach($arr as $func){
    if(function_exists($func)){
        $func();
    }
}
<br><font color="#e78608">------解決策---------</font><br>array_product または array_reduce を使用できます<br><br><br>$ar = array('','wc1','','wc3');<br>$r = array();<br>foreach($ar as $func)<br> $ r[] = $func ? $func() : 1;<br>echo array_product($r);<br><br>&& は、wc1 が 0 を返し、wc3 が 1 を返すと仮定すると <br> と同等です。 $r は 1,0,1,1 で、乗算後は 0<br><br> が得られます。wc1 が 1 を返し、wc3 が 1<br> を返すと仮定すると、$r は 1,1,1,1 になります。乗算すると 1<br> が得られます
<br><br>------解決策---------<font color="#e78608"></font><br>PHP コード
------解決策------------------これは比較的簡単です。

PHP コード
$a=Array('a','b','','c'); For($i=0;$i
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。