<?php
$x=new DisplayTaxonomy ();
$myarray= array();
$x->setADTitle("bunkers");
echo $x->getADTitle();
$myarray =$x;//i also tried array_push($$x, $myarray); same error
echo $myarray[0]->getADTitle();
?>
致命错误:无法在C:\ xampp \ htdocs \ wordpress \ wp-content \ plugins \ exec-php \ includes \ runtime.php(42)中使用DisplayTaxonomy类型的对象作为数组:eval()'d code on第9行
<?php
class DisplayTaxonomy {
public $ADTitle;
public function setADTitle($ADTitle)
{
$this->ADTitle = $ADTitle;
}
public function getADTitle()
{
return $this->ADTitle;
}
?>
答案 0 :(得分:3)
使用[]
运算符将$x
附加到$myarray
:
$myarray[] = $x;
echo $myarray[0]->getADTitle();
或者通过array_push()
,作为一个函数调用,它的效率可能比使用[]
语言结构的效率要低一些。
array_push($myarray, $x);
定义和添加数组的方法详见the PHP manual on Arrays。
答案 1 :(得分:3)
$myarray = $x;
应该是
$myarray[] = $x
答案 2 :(得分:1)
从PHP 5.4开始,您还可以使用替换的短数组语法 array()with []。
This允许您初始化对象并将对象添加到数组中:
<?php
class DisplayTaxonomy
{
public $ADTitle;
public function setADTitle($ADTitle)
{
$this->ADTitle = $ADTitle;
}
public function getADTitle()
{
return $this->ADTitle;
}
}
$x = new DisplayTaxonomy();
$x->setADTitle("bunkers");
//echo $x->getADTitle();
$myarray[] = $x; // Notice no previous array initialization
echo $myarray[0]->getADTitle();
?>
答案 3 :(得分:0)
在php中,数组追加是这样的:
$myarray[] = $x
您正在做的是将$myarray
分配给DisplayTaxonomy
对象,然后尝试将您的对象用作具有数组下标($myarray[0]
)的数组。因此错误。
顺便说一句,如果您要为属性使用getter和setter,则不应将该属性公开为public。尝试protected $ADTitle;
或者不要使用getter和setter。
答案 4 :(得分:0)
原因是您在执行以下操作时将对象分配给$myarray
:
$myarray = $x
。此时,$myarray
不再是数组,而是您分配给它的对象,即$x
。
在代码中的评论中,您说您还尝试了array_push($$x, $myarray)
。这不起作用的原因有两个。
原因1:您使用$$x
代替$x
。如果您有两个美元符号($$x
),则相当于${$x}
,它将首先将$x
转换为字符串(可能是“对象#1”或类似的东西),然后查找名为${'Object #1'}
的变量,它显然不存在。例如,如果您有一个名为$something
的变量,您也可以像这样使用它:${'something'}
。因此,如果您有一个包含文字字符串“something”的变量,例如$var_name = 'something';
,那么您可以执行${$var_name}
或$$var_name
。这两种情况都会得到变量$ something的内容。
原因2:您还在array_push
中将它们排列错误。
这应该适用:
array_push($myarray, $x)
但正如其他人所指出的,这恰恰相同:$myarray[] = $x
。
我希望这有助于解释事情是如何运作的。