0

配列にオブジェクトが含まれるコードがあり、その中にオブジェクトが含まれています。次に例を示します。

<?php
class person {
    public $name;
    public $foods=array();
}
class food {
    public $foodnames=array() ;
}
$peoplearray[$name] = new person;
$peoplearray[$name]->name = 'john' ;
$peoplearray[$name]->foods[$key] = new food;
$peoplearray[$name]->foods[$key]->foodnames[$key] = 'ice cream' ;
$peoplearray[$name]->foods[$key] = new food;
$peoplearray[$name]->foods[$key]->foodnames[$key] = 'banana' ;

$peoplearray[$name] = new person;
$peoplearray[$name]->name = 'julie' ;
$peoplearray[$name]->foods[$key] = new food;
$peoplearray[$name]->foods[$key]->foodnames[$key] = 'chocolate' ;
$peoplearray[$name]->foods[$key] = new food;
$peoplearray[$name]->foods[$key]->foodnames[$key] = 'coffee' ;
$peoplearray[$name]->foods[$key] = new food;
$peoplearray[$name]->foods[$key]->foodnames[$key] = 'rice' ;
?>

ここで、food クラスのすべてのオブジェクトを反復処理して、それらのプロパティを取得できるようにする必要があります。これを行う最も効率的な方法を知っている人はいますか?

4

1 に答える 1

2

クラス food で static プロパティを宣言し、構築時に food オブジェクトをその中に入れます:

class food {
  public static $collection = array();
  // other properties ...

  public function __construct() {
    // Stuff
    self::$collection[] = $this;
  }
}

// Create foo objects
$f = new food();

// Iterate
foreach(food::$collection as $foodobj) {
  // Stuff
}
于 2012-07-23T14:02:57.273 に答える