$str = str_replace(';', ',', $mobtype);
$str = 'and s.mid in('.$str.')';

解决方案 »

  1.   

    1.为什么$type一会是字string,到下面就变成了string[]类型的,php声明元素都不用写类型么?
    2.有个问题:$restr是变量,它是作什么用的??
    3.关于$restr的声明,在php中,变量可以在后面声明???
      

  2.   


    explode ……array();结果都是数组,无论if还是else$restr的作用是,将数组元素用','连接起来,成一个字符串,但是需要(n-1)个',',所以第一次使用,是个'',后来才把','赋值给$restrphp弱类型的,在这例中,$restr,运算需要什么类型,它就是啥类型。.= 时候,$restr就是字符串了  +=就是数了,但结果会不一样
      

  3.   

    1.php是弱类型语言,你赋给某个变量什么类型的数据,它就是什么类型.
    2.$restr只是个可有可无的变量,第一次循环之前为空,然后第二次开始就变成一个逗号,按你贴出的代码看,完全没必要这么来实现.
     
    $type =str_replace( " ", "" ,$mobtype);  //string type=mobtype.Replace(" ","");
    if($type!='') //if (type!="")//奇怪,为什么$type一会是字string,到下面就变成了string[]类型的,php声明元素都不用写类型么?
    $type =explode(";",$type);//char[] charseparators = new char[] { ';' };
                              //string[] type2 = mtype.Split(charseparators);
    else                      //else
    $type =array();           //string [] type2=new string [];$instr ='';                 // string instr="";
    if(count($type)>0){        //if (type2.Length >0)
       $instr = implode(',',$type);//有这么好的函数还要费那劲干啥.
        }
    $instr=" and s.mid in (".$instr.") ";//instr=" and s.mid in ("+instr+")";3.赋值语句而已,竟然每个循环赋一次. - -
      

  4.   

    1.为什么$type一会是字string,到下面就变成了string[]类型的,php声明元素都不用写类型么? 
    php是弱类型语言,无需声明即可使用,一个未声明的变量可以是一个boolean值false,可以是一个integer值0,可以是一个空对象,可以是一个空数组,具体要看上下文的关系。2.有个问题:$restr是变量,它是作什么用的?? 
    楼上已经回答过了。
    3.关于$restr的声明,在php中,变量可以在后面声明???
    使用即声明。