在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

解决方案 »

  1.   


    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();
    }
    }
    是不是这个意思?
      

  2.   

    多谢。
    你的方法,只能是这种数组才行。
    $arr=array('','wc1()','','wc3()');无()不执行啊。
      

  3.   

    这个也算有难度?
    字串都对应了,不需要转换,判断empty()就行了
      

  4.   

    刚才的描述有误。我返回的结果是要处理的。
    当遇到$arr0=array('','wc1','','wc3');执行2个函数,并返回二者相与的结果:wc1() && wc3()
    当遇到$arr1=array('wc0','wc1','wc2','');执行3个函数,并返回三者相与的结果:wc0() && wc1() && wc2()
    当遇到$arr2=array('wc0','','','wc3');执行2个函数,并返回二者相与的结果:wc0() && wc3()麻烦你了。
      

  5.   

    就是我应该怎么样技巧性的处理那个相与,
    我这样写"&&"成了字符串了。
      

  6.   

    array_product 或 array_reduce 都可以对于
    $ar = array('','wc1','','wc3');
    $r = array();
    foreach($ar as $func)
      $r[] = $func ? $func() : 1;
    echo array_product($r);&& 与相当于乘法
    假定 wc1 返回 0、wc3 返回1
    则 $r 为 1,0,1,1 连乘后得 0假定 wc1 返回 1、wc3 返回 1
    则 $r 为 1,1,1,1 连乘后得 1
      

  7.   

    <?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
      

  8.   

    <?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
      

  9.   

    这个比较简单.
    $a=Array('a','b','','c');
    For($i=0;$i<4;$i++) {
    IF($a[$i]!='') {
    eval("wc{$i}();");
    }
    }function wc0(){
    Echo '0';
    }
    function wc1(){
    Echo '1';
    }
    function wc2(){
    Echo '2';
    }
    function wc3(){
    Echo '3';
    }