PHPで、多次元配列から新しい多次元配列を作成したい。

下記のような多次元配列があるとき、

Array
(
  [0] => Array
    (
      [id] => 1
      [pref] => 東京
    )
  [1] => Array
    (
      [id] => 1
      [pref] => 大阪

下記条件で処理して
・東京だったら、関東
・大阪だったら、関西
・それ以外だったら、空

下記結果を取得したいのですが、どうすれば良いでしょうか?

Array
(
  [0] => Array
    (
      [id] => 1
      [pref] => 東京
      [area] => 関東
    )
  [1] => Array
    (
      [id] => 1
      [pref] => 大阪
      [area] => 関西

ソフトウェア開発 カテゴリーPHP カテゴリー   閲覧数:527  投稿者:しのはら花梨さん

foreach文を使って元の配列をループし、条件に応じて新しいキーと値を追加してください

PHPで多次元配列から新しい多次元配列を作成する方法についてお尋ねですね。 一つの方法は、foreach文を使って元の配列をループし、条件に応じて新しいキーと値を追加することです例えば、以下のようなコードになります。

// 元の配列
$array = array(
    array(
        "id" => 1,
        "pref" => "東京"
    ),
    array(
        "id" => 2,
        "pref" => "大阪"
    )
);

// 新しい配列を作るための空の配列
$new_array = array();

// 元の配列をループする
foreach ($array as $item) {
    // prefの値に応じてareaの値を決める
    switch ($item["pref"]) {
        case "東京":
            $area = "関東";
            break;
        case "大阪":
            $area = "関西";
            break;
        default:
            $area = "";
            break;
    }
    // 新しい配列に元の配列の要素とareaの要素を追加する
    $new_array[] = array(
        "id" => $item["id"],
        "pref" => $item["pref"],
        "area" => $area
    );
}

// 新しい配列を表示する
print_r($new_array);

このコードを実行すると、以下のような結果が得られます。

Array
(
    [0] => Array
        (
            [id] => 1
            [pref] => 東京
            [area] => 関東
        )

    [1] => Array
        (
            [id] => 2
            [pref] => 大阪
            [area] => 関西
        )

)

これはあくまで一例ですので、他にも方法があるかもしれません。ご参考になれば幸いです。

この回答へのレス

foreachループを使用して元の配列の各要素をチェックして、新しい配列要素に必要な情報を追加してください

以下は、PHPで指定された条件に基づいて、元の多次元配列から新しい多次元配列を作成するサンプルコードです。このコードでは、foreachループを使用して、元の配列の各要素をチェックして、新しい配列の要素に必要な情報を追加します。

$originalArray = array(
    array(
        'id' => 1,
        'pref' => '東京'
    ),
    array(
        'id' => 2,
        'pref' => '大阪'
    ),
    array(
        'id' => 3,
        'pref' => '福岡'
    )
);

$newArray = array();

foreach ($originalArray as $item) {
    if ($item['pref'] === '東京') {
        $item['area'] = '関東';
    } elseif ($item['pref'] === '大阪') {
        $item['area'] = '関西';
    } else {
        $item['area'] = '';
    }
    $newArray[] = $item;
}

print_r($newArray);

上記のコードを実行すると、以下のように出力されます。

Array
(
    [0] => Array
        (
            [id] => 1
            [pref] => 東京
            [area] => 関東
        )

    [1] => Array
        (
            [id] => 2
            [pref] => 大阪
            [area] => 関西
        )

    [2] => Array
        (
            [id] => 3
            [pref] => 福岡
            [area] =>
        )

)

この回答へのレス

ゲスト 1行コメント投稿

指定期間人気ページランキング / 2022-11-16 → 2025-12-11
順位 ページタイトル抜粋 アクセス数
1 QA2028 553
2 part と section と chapter の違いは何ですか? | 言葉 カテゴリー 346
3 仲介元付(専任) / 仲介元付(一般) / 仲介元付 の違いは、何ですか? | 不動産 カテゴリー 123
4 トピック の対義語は何ですか? | 言葉 カテゴリー 111
5 サービス紹介 108
6 「section」「division」「unit」「component」「module」の違いは何ですか? | 言葉 カテゴリー 84
7 カテゴリー一覧 77
8 Windowsパソコンを再起動すべき適切なタイミングについて | パソコン カテゴリー 70
9 タグ一覧 65
10 reply と comment と response の違いは何ですか? | 言葉 カテゴリー 64
11 userコメント一覧 59
12 ゲストコメント一覧 58
13 「topic」「part」「section」「chapter」を大きい順に並べてください。 | 言葉 カテゴリー 56
14 「topic」「part」「section」「chapter」「segment」「paragraph」を大きい順に並べてください。 | 言葉 カテゴリー 55
15 「四つの坂が合流している場所」を何と呼びますか? 交差点? それとも四差路ですか? | 言葉 カテゴリー 54
16 PHPでRSSフィードを効率的に表示するキャッシュ活用と更新判定について | PHP(ソフトウェア開発) カテゴリー 45
17 ルーターの電源を入れ直さなくても、IPアドレスは変更されますか? | ネットワーク(ソフトウェア開発) カテゴリー 42
18 Webページにおける topic と article の違いは何ですか? | Webサービス開発(ソフトウェア開発) カテゴリー 36
19 Webページにおける「section」「division」「unit」「component」「module」の違いは何ですか? | Webサービス開発(ソフトウェア開発) カテゴリー 35
20 Segment と Paragraph の違いは何ですか? | 言葉 カテゴリー 33
2025/12/12 1:02 更新