配列の格納方法について
解決したいこと
PHPで都道府県のjsonデータを読み込み、下記のような配列を作成したいです。
そこでforeachとifを使い順次配列に格納したいのですが、一部しか格納されません。
例:下記に記載のif($key <= 7)であれば、キー7しか格納されません。
こちらの解決方法を教えてください。
【作成したい配列】
[
"北海道地方" => [
"県名" => [県名1, ...],
"市町村名" => [市町村名1, ...],
...
]
###jsonデータ
[{
"01": {
"id": "01",
"name": "北海道",
"short": "北海道",
"kana": "ホッカイドウ",
"en": "hokkaido",
"city":[
{"citycode":"0010001","city":"札幌市中央区"},
{"citycode":"0010002","city":"札幌市北区"},
{"citycode":"0010003","city":"札幌市東区"},
{"citycode":"0010004","city":"札幌市白石区"},
{"citycode":"0010005","city":"札幌市豊平区"},
・・・・
]
},
"02": {
"id": "02",
"name": "青森県",
"short": "青森",
"kana": "アオモリケン",
"en": "aomori",
"city":[
{"citycode":"0020001","city":"青森市"},
{"citycode":"0020002","city":"弘前市"},
{"citycode":"0020003","city":"八戸市"},
{"citycode":"0020004","city":"黒石市"},
{"citycode":"0020005","city":"五所川原市"},
・・・・
該当するソースコード
$area = [
"北海道地方" => [
"県名",
"市区町村名"
],
"東北地方" => [
"県名",
"市区町村名"
],
"関東地方" => [
"県名",
"市区町村名"
],
"中部地方" => [
"県名",
"市区町村名"
],
"関西地方" => [
"県名",
"市区町村名"
],
"中国地方" => [
"県名",
"市区町村名"
],
"四国地方" => [
"県名",
"市区町村名"
],
"九州・沖縄地方" => [
"県名",
"市区町村名"
]
];
foreach ($json[0] as $key => $val) {
$city = array_column($val["city"], "city");
if ($key <= 1) {
$area["北海道地方"]["県名"] = $val["name"];
$area["北海道地方"]["市区町村名"] = $city;
} elseif ($key <= 7) {
$area["東北地方"]["県名"] = $val["name"];
$area["東北地方"]["市区町村名"] = $city;
} elseif ($key <= 14) {
$area["関東地方"]["県名"] = $val["name"];
$area["関東地方"]["市区町村名"] = $city;
} elseif ($key <= 23) {
$area["中部地方"]["県名"] = $val["name"];
$area["中部地方"]["市区町村名"] = $city;
} elseif ($key <= 30) {
$area["関西地方"]["県名"] = $val["name"];
$area["関西地方"]["市区町村名"] = $city;
} elseif ($key <= 35) {
$area["中国地方"]["県名"] = $val["name"];
$area["中国地方"]["市区町村名"] = $city;
} elseif ($key <= 39) {
$area["四国地方"]["県名"] = $val["name"];
$area["四国地方"]["市区町村名"] = $city;
} else {
$area["九州・沖縄地方"]["県名"] = $val["name"];
$area["九州・沖縄地方"]["市区町村名"] = $city;
}
}
0