fork(1) download
  1. <?php
  2.  
  3. function markup_same_route($a, $b) {
  4. foreach ($b as $i) {
  5. if (array_search($i, $a)) {
  6. $c[] = '★' . $i . '★';
  7. } else {
  8. $c[] = $i;
  9. }
  10. }
  11.  
  12. $s = implode('|', $c);
  13.  
  14. $n = count($b);
  15. while ($n > 0) {
  16. $s2 = preg_replace('/→(.*?)★\|★\1→/', '→\1|\1→', $s);
  17. if ($s == $s2) {
  18. break;
  19. } else {
  20. $s = $s2;
  21. }
  22. $n = $n - 1;
  23. }
  24.  
  25. $c = explode('|', $s);
  26.  
  27. return $c;
  28. }
  29.  
  30. // test
  31.  
  32. $a[1]='北千住→日暮里';
  33. $a[2]='日暮里→上野';
  34. $a[3]='上野→秋葉原';
  35. $a[4]='秋葉原→つくば';
  36. $a[5]='つくば→茨城';
  37. $a[6]='茨城→東京';
  38. $a[7]='東京→大阪';
  39. $a[8]='大阪→名古屋';
  40. $a[9]='名古屋→京都';
  41. $a[10]='京都→大宮';
  42.  
  43. $b[1]='北千住→日暮里';
  44. $b[2]='渋谷→代々木';
  45. $b[3]='上野→秋葉原';
  46. $b[4]='秋葉原→つくば';
  47. $b[5]='大阪→名古屋';
  48. $b[6]='名古屋→一宮';
  49. $b[7]='東京→大阪';
  50. $b[8]='大阪→名古屋';
  51. $b[9]='名古屋→京都';
  52. $b[10]='京都→梅田';
  53.  
  54. $c = markup_same_route($a, $b);
  55. print_r($c);
  56.  
  57. ?>
  58.  
Success #stdin #stdout 0.02s 52472KB
stdin
Standard input is empty
stdout
Array
(
    [0] => ★北千住→日暮里★
    [1] => 渋谷→代々木
    [2] => ★上野→秋葉原
    [3] => 秋葉原→つくば★
    [4] => ★大阪→名古屋★
    [5] => 名古屋→一宮
    [6] => ★東京→大阪
    [7] => 大阪→名古屋
    [8] => 名古屋→京都★
    [9] => 京都→梅田
)