编程中遇到个问题,给方法传递参数的时候,如果参数可有可无的话,用array()就行,但是我这里必须加上null,即array(null)才能通过,否则就报错说无效的参数ps:期望array(),不用加 null请问这个情况应该如何解决。同学在redhat下开发就没有问题,我是在Ubuntu下开发的

解决方案 »

  1.   

    array(null);
    为真,因为array()不是空的,他的键是0,值是null,count()为1
    array()
    为假,他没有键和值count()为 0
      

  2.   


    谢谢解答这是后台call方法定义的函数原型,XXXX::call($methodname, array $params = array() ){....}程序只要按照规则使用这个call方法就行了:如下$cnt = XXXX::call('Customer.Count()', array()); //期望应该这样写但是我的必须在array()中加入null,即 $cnt = XXXX::call('Customer.Count()', array(null)); 函数返回Customer的数量,Customer.Count()交给后台实现的
      

  3.   


    function abc($a,$b="",$c=0){}
    abc(1);
    abc(2,"abc");
    abc(3,"zbc",666);
      

  4.   

    XXXX::call($methodname, array $params = ''){
        if(!is_array($params) && $params){
            echo '您传递的参数不是数组类型';exit;
        }else{
            //
        }
    }
      

  5.   


    XXXX::call($methodname, $params = ''){//去掉array
      if(!is_array($params) && $params){
      echo '您传递的参数不是数组类型';exit;
      }else{
      //
      }
    }
      

  6.   

    XXXX::call($methodname, $params = array() ){....}调用
    $cnt = XXXX::call('Customer.Count()'); 这样就可以了
      

  7.   


    您好,要求的是call()必须有个方法名和array(),array()中放的是参数即,必须写成XXXX::call('methodname', array($a, $b, $c));表示传入methodname方法的三个参数是$a $b $c,对于不需要参数的方法,要求写成XXXX::call('methodname', array());