本帖最后由 mydearbaby 于 2011-04-05 14:14:46 编辑

解决方案 »

  1.   

    //这样试试:
    if (!isset($var = explode(',',$cnode[$var])[$addno])) {
        return '';
    }
      

  2.   

    //明白了,不是empty()的问题,应该这样:
    //explode()函数返回的是个布尔值,进行[]运算必须报错。
    $var = explode( ",", $cnode[$var]);
    if (empty($var[$addno]) ...
      

  3.   

    function my_tplname( $cnstr, $cnode, $addno = 0 )//$addno没有传入值时默认为0
    {
                    $var = defined( "WAP_MODE" ) ? "wtpls" : "tpls";//常量WAP_MODE已经定义时$var赋值为wtpls,未定义时为tpls
                    if ( !empty( $cnode[$var] ) )
                    {
                                    $var = explode( ",", $cnode[$var] );//按上面$var的定义切开
                    }
                    /*if ( empty( $var = explode( ",", $cnode[$var] )[$addno] ) )
                    {
                                    return "";
                    }*/
                    return $var[$addno];//返回切开后的第n个值,默认0,就是第一个值
    }
    注释部分与其他部分其实是理解上是重复的,但写法不符合php规范…… “表达式[标签]”的写法php难以解析