1

このエラーが発生する理由がわかりません。とてもシンプルですが、php では大きく異なります。

<?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();
?>

致命的なエラー: タイプ DisplayTaxonomy のオブジェクトを C:\xampp\htdocs\wordpress\wp-content\plugins\exec-php\includes\runtime.php(42) の配列として使用できません: 9 行目の eval()'d コード

<?php
 class DisplayTaxonomy {
    public $ADTitle;
 public function setADTitle($ADTitle)
    {
        $this->ADTitle = $ADTitle; 
    }
    public function getADTitle()
    {
        return $this->ADTitle;
    }
?>
4

5 に答える 5

3

演算子を使用し[]て追加$xします$myarray:

$myarray[] = $x;
echo $myarray[0]->getADTitle();

または、関数呼び出しとして、言語構造array_push()を使用するよりも少し効率が悪い場合があります。[]

array_push($myarray, $x);

配列を定義して配列に追加する方法については、 PHP マニュアルの Arraysで詳しく説明されています。

于 2012-07-18T18:14:25.357 に答える
3
$myarray = $x;

する必要があります

$myarray[] = $x
于 2012-07-18T18:14:32.397 に答える
1

PHP 5.4 以降では、array() を [] に置き換える短い配列構文も使用できます。

これにより、オブジェクトの初期化と配列への追加の両方が可能になります。

<?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(); 
?> 
于 2012-07-18T18:19:03.980 に答える
0

$myarrayその理由は、次の場合 にオブジェクトを割り当てるためです$myarray = $x。この時点で、$myarrayは配列ではなく、割り当てたオブジェクト、つまり$x

コード内のコメントで、あなたも試したと言っていますarray_push($$x, $myarray)。これが機能しない理由は2つあります。

理由1:$$xの代わりにを使用してい$xます。2つのドル記号($$x)がある場合、これはと同等であり${$x}、最初に$x文字列(おそらく「オブジェクト#1」など)に変換され、次に:と呼ばれる変数を探します。${'Object #1'}これは明らかに存在しません。 。たとえば、という変数がある場合は$something、次のように使用することもできます${'something'}。したがって、たとえば、リテラル文字列「something」を含む変数がある場合は、またはのいずれか$var_name = 'something';を実行できます。どちらの場合も、変数$somethingのコンテンツを取得します。${$var_name}$$var_name

理由2:あなたはそれらを間違った順序で並べていarray_pushます。

これは代わりに機能するはずです: array_push($myarray, $x)

しかし、他の人が指摘しているように、これはまったく同じです$myarray[] = $x

それが物事の仕組みを説明するのに役立つことを願っています。

于 2012-07-18T18:23:43.930 に答える
0

PHPでは、配列の追加は次のようになります。

$myarray[] = $x

あなたがしていることは$myarrayあなたのDisplayTaxonomyオブジェクトに割り当てて、それからあなたのオブジェクトをarray-subscripting($myarray[0])で配列として使おうとしていることです。したがって、エラー。

余談ですが、プロパティにゲッターとセッターを使用する場合は、そのプロパティをパブリックとして公開しないでください。protected $ADTitle;ゲッターとセッターのいずれかを試すか、使用しないでください。

于 2012-07-18T18:17:16.347 に答える