PHP:如何遍历一个类的所有对象?
问题描述:
我的数组,其中包含对象,这在他们的对象,例如代码:PHP:如何遍历一个类的所有对象?
<?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' ;
?>
现在我需要通过类食品中的所有对象过于重复,所以我可以取回他们的属性。任何人都知道这样做最有效的方法?
答
声明类食品静态属性,把你的食物对象在其构造时间:
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
}
+0
您还应该添加'__destruct()'实现来从集合中删除对象。我会使用'spl_object_hash($ this)'将索引编入索引,然后从集合中移除将会很简单。 – FtDRbwLXw6 2012-07-23 14:06:27
+0
我同意,应该处理对象的破坏(也许除非在脚本关闭的时候食物不会被销毁) – yent 2012-07-23 14:09:00
它是一个数组。 'foreach()'应该就够了。 – uzyn 2012-07-23 14:01:30