在php中将自定义对象数组添加到另一个数组时缺少它们
我试图从数据库中获取一个名为“Travel”的自定义对象数组 此Travel对象具有另一个自定义对象数组,即我错过的对象数组。这个物体被称为“乘客”。我的旅行有很多旅客。我可以在eclipse调试变量中看到,主数组具有所有行程,而所有行程都具有正确计数的乘客数组 第二个数组中的每个对象都有正确的类型,但它们都是空的,没有任何属性,在eclipse调试中,我只能看到类名,甚至看不到对象属性的名称。我觉得很奇怪 分配对象的循环:在php中将自定义对象数组添加到另一个数组时缺少它们,php,arrays,object,Php,Arrays,Object,我试图从数据库中获取一个名为“Travel”的自定义对象数组 此Travel对象具有另一个自定义对象数组,即我错过的对象数组。这个物体被称为“乘客”。我的旅行有很多旅客。我可以在eclipse调试变量中看到,主数组具有所有行程,而所有行程都具有正确计数的乘客数组 第二个数组中的每个对象都有正确的类型,但它们都是空的,没有任何属性,在eclipse调试中,我只能看到类名,甚至看不到对象属性的名称。我觉得很奇怪 分配对象的循环: // Array to exclude $exc = array();
// Array to exclude
$exc = array();
// Object Travel
$travel = null;
// Main array
$travelArr = array();
// $arr is the result from database
foreach ($arr as $val) {
// If the new $val is not processed
if (!in_array($val->vid, $exc)) {
$exc[] = $val->vid;
if (!is_null($travel))
// At this point $travel has its passenger perfect.
// Once the object is added to the main array it loses its passenger attributes
$travelArr[] = clone $travel;
unset($travel);
// Function to pass from SQL to Travel object
$travel = $this->fromSQLToObject($val);
}
if (!is_null($val->pemail)) {
$pas = $this->fromSqlToPasseger($val);
if (!is_null($pas))
$travel->addPassenger($pas);
}
}
经过一天的思考,我发现这与我的eclipse配置有关,我看不到调试中的变量,但它们在那里
谢谢大家。为什么在分配之前要取消($travel)设置?不知道这和我的问题有什么关系,我从来没有问过克隆。我的问题与问题无关,我只是想知道为什么你有不必要的代码。我想我是在回答另一条我现在看不到的评论,我快疯了。如果我取消设置$travel是为了避免坏内存拷贝和其他变量未清理时可能发生的问题。也许你是在评论olga的答案,她已经删除了这个答案。