Adding entries to an array, one at a time I'm trying to loop through some entries and if they fulfil a certain condition push them into another array of entries.

{% set todaysEvents = []
{# GET TODAY'S ONE-OFF EVENTS #}
{% set todaysOneOffEvents = craft.entries.section('events').eventDate('= '~today | date("Y-m-d")).find() %}

{# ADD TODAY'S ONE-OFF EVENTS TO TODAY'S EVENTS #}
{% set todaysEvents = todaysEvents|merge(todaysOneOffEvents) %}
{# WORKING BEAUTIFULLY #}       

{# FOR MULTI-DAY EVENTS THE DATES ARE IN A MATRIX FIELD, SO WE CAN'T FILTER USING CRAFT.ENTRIES #}
{# INSTEAD, WE HAVE TO FILTER EVERY ENTRY IN EVENTS WHICH USE THE MULTI-DAY ENTRY TYPE #}
{% for event in craft.entries.section('events').type('eventWithMultipleDays').find() %}
    {# NOW FIND ONLY ENTRIES WITH A MATRIX BLOCK CONTAINING TODAY'S DATE #}
    {% for date in event.dates if date.multiDate == today | date("Y-m-d") %}
        {# CORRECTLY IDENTIFIES ENTRY AS HAVING TODAY'S DATE IN A MATRIX BLOCK #}
        {# SO NOW WE ADD IT TO TODAYSEVENTS ARRAY #}
        {% set todaysEvents = todaysEvents|merge(event) %}
        {# ERROR: THE MERGE FILTER ONLY WORKS WITH ARRAYS OR HASHES #}      
    {% endfor %}
{% endfor %}


What go on? See the error in the last comment. How do I pass only these filtered entries into todaysEvents array?
The merge filter only works with 2 arrays (or 2 hashes), not with an array and an object. I think that the event you are trying to add is not an array, it is a single event (Entry Model). You might try adding the event using [ event ].

{% set todaysEvents = todaysEvents|merge([event]) %}