Gracias por tan rápida respuesta, alyciashape.
El caso es que de lo que quiero hacer ya existe algo y ese "algo" no tiene probelmas con los tiempos de ejecución. De todas formas pongo el código a ver si se puede mejorar:
Código PHP:
function crossing(array $muestra0, array $muestra1) {
$resultado = array();
$i = 0;
foreach ($muestra0 as $rowm=>$mal) {
foreach ($muestra1 as $rowf=>$fem) {
foreach ($fem as $colm=>$fml) {
if (!preg_match('/(R|S|T|A|Q)/', $fml))
$resultado[$i][$colm] = $fml.'-'.$mal[$colm];
else if (preg_match('/(R|S|T)/', $mal[$colm]) && preg_match('/W/', $resultado[$i][0]))
$resultado[$i][$colm] = '';
else if (preg_match('/(R|S|T)/', $fml) && preg_match('/(r|s|t)$/', $mal[$colm]) && preg_match('/W/', $resultado[$i][0]))
$resultado[$i][$colm] = $mal[$colm].'-'.$mal[$colm];
else if (preg_match('/(R|S|T)/', $fml) && preg_match('/(r|s|t)$/', $mal[$colm]) && preg_match('/Z/', $resultado[$i][0]))
$resultado[$i][$colm] = $mal[$colm].'-'.$fml;
else
$resultado[$i][$colm] = $mal[$colm].'-'.$fml;
}
$i++;
}
}
return $resultado;
}