我要定义一个二维数组,变量名是动态产生的,$variable=$value;//生成变量名$$variable=$word->getRegister($str);//得到的 $$variable 是一个n行2列的二维数组比如输出的值是:
$variable="name"
$name[0][0]="field1"
$name[0][1]="<w:t>description=abcd</w:t>";//写到word文档里的现在 ${$variable}[0][0] 可以写到word文档里,但轮到 ${$variable}[0][1] 就会报错,说有非法字符,不能生成word文档。但是如果我直接用$name[0][1]就可以,可是因为我的变量名是动态生成的,程序肯定不能这样写。请问问题出来哪?鞠躬,谢谢

解决方案 »

  1.   

    你给的这个链接的内容,不是我要的。我大概知道问题所在,但我不知道怎么解决。好像是因为我<w:t> </w:t>里面含有变量。。
      

  2.   

    getRegister中需要对内容中某些字符转义?
      

  3.   

    $ + "name" == $name ???
    你是这么认为的?这样行不通的。
    不明白你要干什么。为什么要动态获得变量名呢?
    你的目的是得到数组和数组里的数据吧?干嘛要跟变量较劲?自定义变量名无法实现嘛?
      

  4.   

    你要动态变量名就得用foreach把其分离出来
    一个一个的对应上就行了
      

  5.   

    不是$ + "name" , 是$ $ name,
    取动态变量,是因为每次需要的数组个数是不定的没办法实现定义,只好动态定义了。 
      

  6.   

    我现在遇到的问题是如果我这样写,
    $$variable[0][1]="description(0x)";
    这样就可以通过 echo "<w:t>".$$variable[0][1]."</w:t>"; 写到word文档里。但如果我这样写,
    $str="description(0x)";
    $$variable[0][1]=$str;
    这样就可以通过 echo "<w:t>".$$variable[0][1]."</w:t>";就说我有非法字符怎么回事啊?
      

  7.   

    echo " <w:t><![CDATA[".${$variable}[0][1]."]]></w:t>";
    让解析器忽略掉之间的文本。