2015-04-01 51 views
1

我一直未能找到任何特定于此问题的东西。在我的课堂上,我需要一个关联数组,并将其值放入类变量中。任何子数组都需要转换为对象。转换为对象发生在以下代码中:PHP:反射,“遇到的格式不正确的数值”设置数组索引

foreach ($value as $key2 => $value2) { 
    $object = new $object_str($value2); 
    $this->$key[$object->getId()] = $object; 
} 

$ value来自外部foreach循环。
$ object_str包含有要创建的对象的名称,
这样的:MartKuper \ OnePageCRM \联系人\ ContactsUrl

输入数组看起来是这样的:

[ 
    'url' => [ 
    'type' => 'website', 
    'value' => 'google.com' 
    ] 
] 

应该创建一个ContactsUrl对象,并根据类的内部随机ID(uniqid())将它添加到$ url类变量(也是一个数组)。因为我不知道输入数组有多少'url'条目,所有这些都需要动态发生。因此,

$this->$key[$object->getId()] 

错误发生在$ key(url)数组的索引上。它似乎不喜欢将字符串作为索引。我试过把硬编码的字符串放在

$this->$key['test] 

那也不管用。当我把一个整数在

$this->$key[1] 

它的工作。将字符串转换为整数不是一个选项。它会破坏许多其他类使用的解析器类。

回答

0

我已经通过执行以下操作来解决问题:

$this->{$key}[$object->getId()] = $object; 

发生了什么事是,它试图利用$key变量本身($key[$object->getId()])的指数,但由于$key不是一个数组,它失败了。它需要取代$key所代表的类变量的索引。