<?php

$first = array(
    array(
        'id'     => 11,
        'expire' => 'undefined',
    ),
    array(
        'id'     => 12,
        'expire' => 'undefined',
    ),
    array(
        'id'     => 6,
        'expire' => 8,
    ),
    array(
        'id'     => 10,
        'expire' => 4,
    ),
);

$second = array(
    array(
        'id'        => 6,
        'realname'  => 'to_es.gif',
        'extension' => 'gif',
        'filesize'  => 57885,
    ),
    array(
        'id'        => 10,
        'realname'  => 'to_joomla_2_customor_view.gif',
        'extension' => 'gif',
        'filesize'  => 77182,
    ),
    array(
        'id'        => 11,
        'realname'  => 'to_nl.gif',
        'extension' => 'gif',
        'filesize'  => 10990,
    ),
    array(
        'id'        => 12,
        'realname'  => 'to_PL_1.gif',
        'extension' => 'gif',
        'filesize'  => 52826,
    ),
);

function my_array_merge($first,$second) {
    $new = array();
    foreach ($first as $f_item) {
        foreach ($second as $i => $s_item) {
            if ($f_item['id']===$s_item['id']) {
                $new[] = $f_item + $s_item;
                unset($second[$i]);
                break;
            }
        }
    }
    usort($new, function($a,$b) {
        return $a['id'] - $b['id'];
    });
    return $new;
}

print_r(my_array_merge($first,$second));


