public static function fromArray(&$p)
 {
     $measurements = array();
     if (isset($p['measurements'])) {
         foreach ($p['measurements'] as $measurement) {
             $measurements[] = Measurement::fromArray($measurement);
         }
     }
     return new Reading($p['id'], isset($p['observation_id']) ? $p['observation_id'] : null, isset($p['set_number']) ? $p['set_number'] : null, isset($p['declination_valid']) ? $p['declination_valid'] : null, isset($p['declination_shift']) ? $p['declination_shift'] : null, isset($p['horizontal_intensity_valid']) ? $p['horizontal_intensity_valid'] : null, isset($p['vertical_intensity_valid']) ? $p['vertical_intensity_valid'] : null, isset($p['startH']) ? $p['startH'] : null, isset($p['endH']) ? $p['endH'] : null, isset($p['absH']) ? $p['absH'] : null, isset($p['baseH']) ? $p['baseH'] : null, isset($p['startZ']) ? $p['startZ'] : null, isset($p['endZ']) ? $p['endZ'] : null, isset($p['absZ']) ? $p['absZ'] : null, isset($p['baseZ']) ? $p['baseZ'] : null, isset($p['startD']) ? $p['startD'] : null, isset($p['endD']) ? $p['endD'] : null, isset($p['absD']) ? $p['absD'] : null, isset($p['baseD']) ? $p['baseD'] : null, isset($p['annotation']) ? $p['annotation'] : null, $measurements);
 }