Home >Backend Development >PHP Tutorial > 算法,关于条件运行自定义函数的,有难度。多谢

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

WBOY
WBOYOriginal
2016-06-13 13:09:55867browse

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

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
                 
              
              
        
            
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn