在php中将自定义对象数组添加到另一个数组时缺少它们

在php中将自定义对象数组添加到另一个数组时缺少它们,php,arrays,object,Php,Arrays,Object,我试图从数据库中获取一个名为“Travel”的自定义对象数组 此Travel对象具有另一个自定义对象数组,即我错过的对象数组。这个物体被称为“乘客”。我的旅行有很多旅客。我可以在eclipse调试变量中看到,主数组具有所有行程,而所有行程都具有正确计数的乘客数组 第二个数组中的每个对象都有正确的类型,但它们都是空的,没有任何属性,在eclipse调试中,我只能看到类名,甚至看不到对象属性的名称。我觉得很奇怪 分配对象的循环: // Array to exclude $exc = array();

我试图从数据库中获取一个名为“Travel”的自定义对象数组

此Travel对象具有另一个自定义对象数组,即我错过的对象数组。这个物体被称为“乘客”。我的旅行有很多旅客。我可以在eclipse调试变量中看到,主数组具有所有行程,而所有行程都具有正确计数的乘客数组

第二个数组中的每个对象都有正确的类型,但它们都是空的,没有任何属性,在eclipse调试中,我只能看到类名,甚至看不到对象属性的名称。我觉得很奇怪

分配对象的循环:

// 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的答案,她已经删除了这个答案。