PHP:反射,"non well formed numeric value encountered"设置数组索引
PHP: reflection, "non well formed numeric value encountered" setting array index
我找不到任何关于此问题的具体信息。在我的 class 中,我需要一个关联数组并将其值放入 class 变量中。任何子数组都需要转换为对象。对象的转换发生在以下代码中:
foreach ($value as $key2 => $value2) {
$object = new $object_str($value2);
$this->$key[$object->getId()] = $object;
}
$value 来自外部 foreach 循环。
$object_str 包含必须创建的对象的名称,
像这样:MartKuper\OnePageCRM\Contacts\ContactsUrl
输入数组可能如下所示:
[
'url' => [
'type' => 'website',
'value' => 'google.com'
]
]
它应该创建一个 ContactsUrl 对象并根据 class' 内部随机 id (uniqid( )).因为我不知道输入数组将有多少 'url' 个条目,所以这一切都需要动态发生。因此
$this->$key[$object->getId()]
错误发生在 $key (url) 数组的索引上。好像不太喜欢拿字符串做索引。我尝试将硬编码字符串放入
$this->$key['test]
那也不管用。当我在
中输入一个整数时
$this->$key[1]
它确实有效。将字符串转换为整数不是一种选择。它会破坏许多其他 classes.
使用的解析器 class
我已经通过执行以下操作解决了这个问题:
$this->{$key}[$object->getId()] = $object;
发生的事情是它试图获取 $key
变量本身 ($key[$object->getId()]
) 的索引,但由于 $key
不是数组,因此失败了。它需要取 $key
代表的 class 变量的索引。
我找不到任何关于此问题的具体信息。在我的 class 中,我需要一个关联数组并将其值放入 class 变量中。任何子数组都需要转换为对象。对象的转换发生在以下代码中:
foreach ($value as $key2 => $value2) {
$object = new $object_str($value2);
$this->$key[$object->getId()] = $object;
}
$value 来自外部 foreach 循环。
$object_str 包含必须创建的对象的名称,
像这样:MartKuper\OnePageCRM\Contacts\ContactsUrl
输入数组可能如下所示:
[
'url' => [
'type' => 'website',
'value' => 'google.com'
]
]
它应该创建一个 ContactsUrl 对象并根据 class' 内部随机 id (uniqid( )).因为我不知道输入数组将有多少 'url' 个条目,所以这一切都需要动态发生。因此
$this->$key[$object->getId()]
错误发生在 $key (url) 数组的索引上。好像不太喜欢拿字符串做索引。我尝试将硬编码字符串放入
$this->$key['test]
那也不管用。当我在
中输入一个整数时$this->$key[1]
它确实有效。将字符串转换为整数不是一种选择。它会破坏许多其他 classes.
使用的解析器 class我已经通过执行以下操作解决了这个问题:
$this->{$key}[$object->getId()] = $object;
发生的事情是它试图获取 $key
变量本身 ($key[$object->getId()]
) 的索引,但由于 $key
不是数组,因此失败了。它需要取 $key
代表的 class 变量的索引。