我创建了以下类:
主类文件
class NativeTabs
{
private $tabs = array();
public function __construct()
{
require_once('/options_elements.php');
}
public function add_tab($key = '', $name = '')
{
// ...
$this->tabs[$key] = $name;
$this->tabs[$key][] = new OptionsElements();
// ...
}
}
$nt = new NativeTabs();
$nt->add_tab('tabname', "Tab Name");
options_elements.php文件
class OptionsElements
{
public function __construct()
{
}
}
当我执行该代码时,我收到以下错误:
致命错误:在THE_LINE_THAT_CONTAIN_THE_CODE($ this-> tabs [$ key] [] = new OptionsElements();)
上的PATH / TO / MY / FILEnative_tabs.php中的字符串不支持[]运算符
为什么我无法在$this->tabs[$key][]
中确定对象?
请问好吗?
答案 0 :(得分:2)
你应该做
$this->tabs[$key] = array();
$this->tabs[$key][] = new OptionsElements();
否则你使用带有字符串的[](你在上面一行分配了$this->tabs[$key] = $name;
,所以$this->tabs[$key]
是一个字符串)
答案 1 :(得分:2)
$this->tabs[$key]
是字符串,不是数组。
您无法将项目添加到字符串中,就像它是一个数组一样。
答案 2 :(得分:1)
你为什么要分配它?
$this->tabs[$key] = $name;
根据名称判断,您只需将数组元素设置为字符串即可。然后你尝试将一个数组元素附加到这个字符串?那不行。
答案 3 :(得分:1)
这样可以正常运行。
$this->tabs[$key] = array("name");
$this->tabs[$key][] = new OptionsElements();
答案 4 :(得分:1)
见内联。
$this->tabs[$key] = $name;
// $this->tabs[$key] becomes a string that contains $name
$this->tabs[$key][] = new OptionsElements();
// $this->tabs[$key][] has no meaning here as its neither array nor an unset value.
// if it was unset or not declared PHP would have make it an array.
你可以做到以下几点。
$this->tabs[$key]['name'] = $name;
$this->tabs[$key]['option_elements'] = new OptionsElements();