php中的对象数组
我不明白为什么我会犯这个错误!它非常简单,但在php中却非常不同 致命错误:无法将DisplayTaxonomy类型的对象用作C:\xampp\htdocs\wordpress\wp content\plugins\exec php\includes\runtime.php42:eval'd代码第9行中的数组php中的对象数组,php,Php,我不明白为什么我会犯这个错误!它非常简单,但在php中却非常不同 致命错误:无法将DisplayTaxonomy类型的对象用作C:\xampp\htdocs\wordpress\wp content\plugins\exec php\includes\runtime.php42:eval'd代码第9行中的数组 <?php class DisplayTaxonomy { public $ADTitle; public function setADTitle($ADTitle)
<?php
class DisplayTaxonomy {
public $ADTitle;
public function setADTitle($ADTitle)
{
$this->ADTitle = $ADTitle;
}
public function getADTitle()
{
return $this->ADTitle;
}
?>
使用[]运算符将$x追加到$myarray上:
或者via,作为函数调用,它的效率可能比使用[]lanugage构造要低一点点
array_push($myarray, $x);
有关定义和添加到数组的方法的详细信息,请参见。使用[]运算符将$x附加到$myarray上:
或者via,作为函数调用,它的效率可能比使用[]lanugage构造要低一点点
array_push($myarray, $x);
中详细介绍了定义和添加到数组的方法
应该是
$myarray[] = $x
应该是
$myarray[] = $x
在php中,数组追加如下所示:
$myarray[] = $x
您要做的是将$myarray分配给DisplayTaxonomy对象,然后尝试将对象用作数组,数组订阅$myarray[0]。这就是错误
另外,如果要对属性使用getter和setter,则不应将该属性公开为公共。试试受保护的$ADTitle;或者干脆不要使用getter和setter。在php中,数组追加是这样的:
$myarray[] = $x
您要做的是将$myarray分配给DisplayTaxonomy对象,然后尝试将对象用作数组,数组订阅$myarray[0]。这就是错误
另外,如果要对属性使用getter和setter,则不应将该属性公开为公共。试试受保护的$ADTitle;或者只是不要使用getter和setter
从PHP5.4开始,您还可以使用短数组语法,它取代了
带有[]的数组
允许您对数组进行初始化和添加对象:
<?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();
?>
从PHP5.4开始,您还可以使用短数组语法,它取代了
带有[]的数组
允许您对数组进行初始化和添加对象:
<?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();
?>
原因是,在执行以下操作时,您正在将对象分配给$myarray: $myarray=$x。此时,$myarray不再是一个数组,而是您分配给它的对象,即$x 在代码中的注释中,您说您还尝试了array\u push$$x,$myarray。这不起作用的原因有两个 原因1:您正在使用$$x而不是$x。如果您有两个美元符号$$x,它相当于${$x},它将首先将$x转换为字符串(可能是Object 1或类似的东西),然后查找名为:${'Object 1'}的变量,该变量显然不存在。例如,如果您有一个名为$something的变量,您也可以这样使用它:${'something'}。因此,如果您有一个包含文字字符串something的变量,例如$var_name='something';,然后可以执行${$var\u name}或$$var\u name。这两种情况都将获得变量$something的内容 原因2:在数组中,您也将它们按错误的顺序放置 这应该起作用: 数组\u推送$myarray,$x 但正如其他人所指出的,这是完全等效的:$myarray[]=$x
我希望这有助于解释事物是如何工作的。原因是,在执行以下操作时,您正在将对象分配给$myarray: $myarray=$x。此时,$myarray不再是一个数组,而是您分配给它的对象,即$x 在代码中的注释中,您说您还尝试了array\u push$$x,$myarray。这不起作用的原因有两个 原因1:您正在使用$$x而不是$x。如果您有两个美元符号$$x,它相当于${$x},它将首先将$x转换为字符串(可能是Object 1或类似的东西),然后查找名为:${'Object 1'}的变量,该变量显然不存在。例如,如果您有一个名为$something的变量,您也可以这样使用它:${'something'}。因此,如果您有一个包含文字字符串something的变量,例如$var_name='something';,然后可以执行${$var\u name}或$$var\u name。这两种情况都将获得变量$something的内容 原因2:在数组中,您也将它们按错误的顺序放置 这应该起作用: 数组\u推送$myarray,$x 但正如其他人所指出的,这是完全等效的:$myarray[]=$x
我希望这有助于解释事物是如何工作的。如何将数组初始化为特定类型的对象,例如$myarray[]=new DisplayTaxonomy;//@jvelez PHP数组元素不必都是同一类型的$myarray=array10,foo,新的DisplayTaxonomy;是完全合法的声明。如何将数组初始化为特定类型的对象,例如$myarray[]=new DisplayTaxonomy;//@jvelez PHP数组元素不必都是同一类型的$myarray=array10,foo,新的DisplayTaxonomy;这是一个完美的法律声明。我知道这是故障排除的一部分。我知道这是故障排除的一部分