やりたいこと
私の場合はこのような配列があり
$prefs = [
"北海道" => 3,
"青森県" => 3,
"岩手県" => 2,
// ... 省略
"宮崎県" => 3,
"鹿児島県" => 3,
"沖縄県" => 4
];
インプットは「東京都品川区...」のような都道府県で区切られていない文字列です。
インプットの都道府県に該当する配列の値を取得することが目的です。
方法
このように対応しました。
$res = 4; // 該当なしの場合は4を返すとする
// $prefs を1件ずつ見ていく
foreach ($prefs as $key => $value) {
// $input(インプット文字列)内に$key(配列のキー)が存在するか
if (strpos($input, $key) !== false) {
// 存在したら対応する値をレスポンス用の変数にセットする
$res = $value;
break;
}
}
return $res;
注意事項
- 都道府県の配列を作る場合に「都」や「県」を省略しないこと
省略しこのようにつくってしまうと、都道府県と同じ地名が存在するため、予期せぬ結果になる可能性があります。
例えば実際にこのような地名があります。この場合、「東京都」、「千葉県」の値を取得したいのに「島根県」、「山梨県」の値を取得してしまう可能性があります。他にもありそうです。
東京都足立区島根...
千葉県四街道市山梨...
// NG 「都」や「県」を省略しない
$prefs = [
"北海道" => 3,
"青森" => 3,
"岩手" => 2,
// ... 省略
"宮崎" => 3,
"鹿児島" => 3,
"沖縄" => 4
];