Rumah >pembangunan bahagian belakang >tutorial php > 算法,关于条件运行自定义函数的,有难度。多谢

算法,关于条件运行自定义函数的,有难度。多谢

WBOY
WBOYasal
2016-06-13 13:09:55864semak imbas

求一个算法,关于条件运行自定义函数的,有难度。谢谢!

PHP code
<!--

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 code

function wc0(){
    echo "wc0\n";
}
function wc1(){
    echo "wc1\n";
}
function wc2(){
    echo "wc2\n";
}
function wc3(){
    echo "wc3\n";
}
$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>&& 与相当于乘法<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><font color="#e78608">------解决方案--------------------</font><br>
PHP code
<?php function wc0(){
        return 1;
    }
    
    function wc1(){
        return 1;
    }
    
    function wc2(){
        return 0;
    }
    
    function wc3(){
        return 1;
    }

    $arr0=array('','wc1','','wc3');//此数组了定义了,要执行那些函数及方法
    $arr1=array('wc0','wc1','wc2','');
    $arr2=array('wc0','','','wc3');
    
    for($i=0;$i<3;$i++){
        //数组名
        $name = 'arr'.$i;
        //数组值
        $tmpArr = $$name;
        
        $result = 1;
        foreach($tmpArr as $fun){
            if($fun != ''){
                $result = $result && $fun();
            }
        }
        
        echo $result? 'true' : 'false';
        $result == 1;
    }

//End_php
<br /><font color="#e78608">------解决方案--------------------</font><br>这个比较简单.<br>
PHP code
$a=Array('a','b','','c');
For($i=0;$i
                 
              
              
        
            
Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn