/**
  * Creates a proper result array from the database data
  *
  * @param array $DBdata the data as it is retrieved from the database, i.e. by SchemaData::getDataFromDB
  * @param bool $asarray return data as associative array (true) or as array of Values (false)
  * @return array|Value[]
  */
 protected function consolidateData($DBdata, $asarray = false)
 {
     $data = array();
     $sep = Search::CONCAT_SEPARATOR;
     foreach ($this->schema->getColumns(false) as $col) {
         // if no data saved yet, return empty strings
         if ($DBdata) {
             $val = $DBdata[0]['out' . $col->getColref()];
         } else {
             $val = '';
         }
         // multi val data is concatenated
         if ($col->isMulti()) {
             $val = explode($sep, $val);
             $val = array_filter($val);
         }
         $value = new Value($col, $val);
         if ($this->opt_skipempty && $value->isEmpty()) {
             continue;
         }
         if ($this->opt_skipempty && !$col->isVisibleInPage()) {
             continue;
         }
         //FIXME is this a correct assumption?
         // for arrays, we return the raw value only
         if ($asarray) {
             $data[$col->getLabel()] = $value->getRawValue();
         } else {
             $data[] = $value;
         }
     }
     return $data;
 }