Warning: Illegal string offset 'id'

Okay, so I'm getting this error: Warning: Illegal string offset 'id'

My multisite was migrated to a new server which also meant the version of PHP was updated. My code didn't change at all, but the new version of PHP now sees this as a warning.

The error is at the top on this line: 'p' => $atts['id']

Here's the code:

function wedding_events_display_here_func($atts) {
	global $post;
	$args = array(
			'post_type'=>'weddingeventscpt',
			'p'        => $atts['id']
	);
	ob_start();
	query_posts($args);

	if ( have_posts() ) : while ( have_posts() ) : the_post();
		?>
		<div class="wedding_details">
                    	<div class="wedding_title">
                    <h2><?php echo the_title(); ?></h2>
                </div>
        	<div class="wedding_details_col_1">
                <div class="date_time_info">
                    <h3>Date & Time</h3>
                    <p><?php echo get_post_meta($post->ID,'weddingevents_date',true);?></p>
                    <p><?php echo get_post_meta($post->ID,'wedding_hour',true)?>:<?php echo get_post_meta($post->ID,'wedding_minute',true)?>&nbsp;<?php echo get_post_meta($post->ID,'wedding_time',true);?></p>
                </div>
                <div class="location_info">
                    <h3>Location</h3>
                    <p><?php echo str_replace( array("\r\n"), '<br />',get_post_meta($post->ID,'weddingevents_address',true));?></p>
                </div>
            </div>
            <div class="wedding_details_col_2">
                <div class="googlemap_image">
                    <?php //echo get_post_meta($post->ID, 'weddingevents_googlemap', true);?>
					<?php $mapDetails = @unserialize(get_post_meta($post->ID, 'bridemaids_mapDetails', true));?>
				<script type='text/javascript'>
				<?php $timeStamp = rand(0,99999); ?>
					function initialize_<?php echo $post->ID.$timeStamp; ?>() {
					   var geocoder = new google.maps.Geocoder();
					   var map;
					   var infowindow = new google.maps.InfoWindow();
					   var marker;
					   var latlng = new google.maps.LatLng(<?php echo @$mapDetails['weddingevent_markerLat'] ?>,<?php echo @$mapDetails['weddingevent_markerLong'] ?>);
					   var mapOptions = {
						zoom: parseInt(<?php echo @$mapDetails['weddingevent_mapZoom'] ?>),
						center: latlng,
						mapTypeId: '<?php echo @$mapDetails['weddingevent_mapTypeId'] ?>'
					  }
					  map = new google.maps.Map(document.getElementById('map-canvas_<?php echo $post->ID.$timeStamp; ?>'), mapOptions);
					   marker = new google.maps.Marker({
						map:map,
						animation: google.maps.Animation.DROP,
						position: latlng
					  });
					 //address = '<?php $mapDetails['weddingevent_markerText'] ?>';
					 address = '<?php echo str_replace( array("\r\n"), '<br />', $mapDetails['weddingevent_markerText'] ); ?>';
					// infowindow.setContent(address.replace(/\r?\n/g, '<br />'));
					 infowindow.setContent(address);
					 infowindow.open(map, marker);

						  marker.setMap(map);

					}

					addLoadEvent(initialize_<?php echo $post->ID.$timeStamp; ?>);

				</script>
				<div id='map-canvas_<?php echo $post->ID.$timeStamp; ?>' style='width: <?php echo  @$mapDetails['weddingevent_mapWidth'] ;?>; height: <?php echo @$mapDetails['weddingevent_mapHeight'] ;?>; position: relative; background-color: rgb(229, 227, 223); overflow: hidden;'>
				</div>
                </div>
            </div>
		</div>
		<?php

	endwhile; endif;
	?>
	<?php
	wp_reset_query();
	return ob_get_clean();
}

Can someone help me