hola de nuevo,
Por si alguien necesita algo parecido coloco aqui lo que he conseguido.
He conseguido lo esperado del siguiente modo, seguro que no es muy correcto, vamos que no esta muy optimizado, pero funcionar funciona
Código PHP:
<?php
function elimina_duplicados($array, $campo) {
foreach ($array as $sub) {
$cmp[] = $sub[$campo];
}
$unique = array_unique($cmp);
foreach ($unique as $k => $campo) {
$resultado[] = $array [$k];
}
return $resultado;
}
$texto = '<>22:10-Madrid<>
<>21:12-Madrid<>
<>22:10-Barcelona<>
<>21:11-Barcelona<>
<>22:10-Bilbao<>
<>21:09-Bilbao<>
<>21:10-Malaga<>
<>20:10-Malaga<>
<>21:10-Malaga<>
<>22:10-Sevilla<> ';
preg_match_all('/<>(.*?)-(.*?)<>/i', $texto, $coincidencias);
$v_usr = array();
while (true) {
$ciudad = current($coincidencias[2]);
$hora = current($coincidencias[1]);
$v_usr[] = array('horario' => $hora, 'ciudad' => $ciudad);
$ciudad = next($coincidencias[2]);
$hora = next($coincidencias[1]);
if ($ciudad === false)
break;
}
foreach ($v_usr as $llave => $fila) {
$aux[$llave] = $fila['horario'];
}
array_multisort($aux, SORT_ASC, $v_usr);
unset ($aux);
echo '<pre>';
print_r(elimina_duplicados($v_usr, 'ciudad'));
echo '</pre>';
?>
Todo esto me devuelve lo siguiente:
Código:
Array
(
[0] => Array
(
[horario] => 20:10
[ciudad] => Malaga
)
[1] => Array
(
[horario] => 21:09
[ciudad] => Bilbao
)
[2] => Array
(
[horario] => 21:11
[ciudad] => Barcelona
)
[3] => Array
(
[horario] => 21:12
[ciudad] => Madrid
)
[4] => Array
(
[horario] => 22:10
[ciudad] => Sevilla
)
)
Si alguien tiene una mejor opcion, se agradece
Saludos