Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php中的对象数组_Php - Fatal编程技术网

php中的对象数组

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中却非常不同

致命错误:无法将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)
    {
        $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;这是一个完美的法律声明。我知道这是故障排除的一部分。我知道这是故障排除的一部分