連想配列の検索方法の仕方に関する質問
質問が長くなりましたので、
http://webtomake.hatenablog.com/entry/2015/08/21/165038
をご覧くさい。
こんな感じでどうでしょう。
<?php function markup_same_route($a, $b) { foreach ($b as $i) { if (array_search($i, $a)) { $c[] = '★' . $i . '★'; } else { $c[] = $i; } } $s = implode('|', $c); $n = count($b); while ($n > 0) { $s2 = preg_replace('/→(.*?)★\|★\1→/', '→\1|\1→', $s); if ($s == $s2) { break; } else { $s = $s2; } $n = $n - 1; } $c = explode('|', $s); return $c; } // test $a = ... $b = ... $c = markup_same_route($a, $b); print_r($c); ?>
ideone.com で試したのがこちらです。
http://ideone.com/6BkWBT
ご返答ありがとうございます。
2015/08/26 20:01:00そうですか、プログラム側では出来なそうですか....
ご回答ありがとうございます。
これは、牛乳先生向けのコメントですかね。
ひとつに決める必要はありませんが、いくつのバリエーションがあるかの決めは必要です。
は、何とかなりますが、
は、とてつもなくハードルが高くなります。
「など」をプログラムに類推させるということですから、日本語を解釈させる、レベルのところまで一足飛びにハードルが高くなります。
それでも区切りが決められないということであれば、逆に地点の方を辞書引きにするという手はあります。
地点の候補に入らないものは、全て地点の区切りと考える方法です。
先に挙げた、「日暮里」と「西日暮里」のような部分重複がある場合、「西」の文字は区切りと見なせなくなります。
極端な例ですが、ひらがなの「から」が含まれる駅名があると「から」が区切りとして判別できない場合が出てくるということです。
繰り返しの引用ですが、正確に言うと「前提となる決め事があいまいなので、提示された条件の範囲では、プログラムで処理をするには難しい」ということになります。
2015/08/26 23:04:36