$data[$a];
//报错, Illegal offset type
$data[{$a}];
//报错,syntax error, unexpected '{', expecting ']'
有什么办法能够将一个变量作为关联数组的偏移量呢?
那为什么$web->{$page};中$page可以作为一个web对象的参数进行调用呢?

解决方案 »

  1.   

    $data[$a]; //报错, Illegal offset type
    只不过是 $a 所表示的关联键或下标不存在
      

  2.   

    $data[$a];
    //报错, Illegal offset type
    $data["{$a}"];
    //报错,syntax error, unexpected '{', expecting ']'这样就不会报错了。
    至于$web->{$page}; 他并没有在一个数组中,所以不报错。
    数组应该是不能用一个实例化对象来进行调用的。
      

  3.   

    抱歉,没说清楚,是赋值语句 $data[$a] = 'hello';这样的话会在$data数组中加入一个key为$a的变量吧?
      

  4.   

    $a有值,依然报错,原来$a传递的是个对象
    数组键只能为string和number
      

  5.   

     $data[{$a}];
    //你看报错信息他把[和}给匹配了。
    加上引号之后就告诉PHP {$a}是一个整体,而不是说[{$a} 是一个整体。
    如果像这样写  $data[{$a}];   其实和这样写 $data [{$a};
    这两个报错应该是相同的。换句通俗的话说PHP把这四个括号配对配迷糊了。
      

  6.   

    thank you,实际情况是我没注意$a是一个simplexml对象,只不过里面只有一个string类型的属性。所以$data[$a];报错。但是你的方法可以是用。
      

  7.   

    thank you,实际情况是我没注意$a是一个simplexml对象,只不过里面只有一个string类型的属性。所以$data[$a];报错。但是你的方法可以是用。http://www.php.net/manual/en/simplexml.examples.php#95224