質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.64%

5次元配列が作れません

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 343

moana

score 7

 前提・実現したいこと

phpで5次元配列のデータを日本の地域をテーマに作ろうとしています。
そもそも5次元配列がどのようなものかわかりきっていないうえ、
echo $japan[][][][][]にoffsetを入れても、エラーが出てしまいます。

 発生している問題・エラーメッセージ

Array to string conversionというエラーが出てしまいました。

 該当のソースコード

<?php

$asahikawa = array('shinasahikawa','kaguraoka');
$wakkanai = array('nayoro','rumoi');
$kushiro = array('tsuruimura','shiranukacho');
$hakodate = array('hokuto','sikabe');
$aomori = array('aomori','hirosaki');
$iwate = array('hiraizumi','morioka');
$akita = array('akita','ogashi');
$miyagi = array('sendai','ishinomaki');
$fukushima = array('fukushima','soma');
$yamagata = array('yamagata','yonezawa');
$ibaraki = array('mito','tsukuba');
$tochigi = array('utsunomiya','nikko');
$gunma = array('maebasi','takazaki');
$saitama = array('saitama','kawagoe');
$chiba = array('chiba','narita');
$tokyo = array('tokyo','shinagawa');
$kanagawa = array('yokohama','kawasaki');
$nigata = array('nigata','nagaoka');
$ishikawa = array('kanazawa','kaga');
$toyama = array('toyama','takaoka');
$fukui = array('fukui','echizen');
$yamanashi = array('kofu','kai');
$nagano = array('matsumoto','nagano');
$shizuoka = array('shizuoka','hamamatsu');
$aichi = array('nagoya','toyota');
$gifu = array('gifu','gero');
$shiga = array('otsu','hikone');
$kyoto = array('kyoto','maizuru');
$hyogo = array('kobe','himeji');
$osaka= array('osaka','sakai');
$nara = array('nara','kashihara');
$wakayama = array('wakayama','tanabe');
$tottori = array('tottri','kurayoshi');
$shimane = array('matie','ooda');
$okayama = array('okayama','kurashiki');
$hiroshima = array('hiroshima,onomichi');
$yamaguchi = array('yamaguchi','shimonoseki');
$kagawa = array('takamatsu','sanuki');
$ehime = array('matsuyama','imabari');
$tokushima = array('tokushima','naruto');
$kochi = array('kochi','shimannto');
$oita = array('oita','beppu');
$saga = array('saga','karatsu');
$fukuoka = array('fukuoka','kitakyusyu');
$nagasaki = array('nagasaki','sasebo');
$kumamoto = array('kumamoto','yatsushiro');
$miyazaki = array('miyazaki','nichinan');
$kagoshima = array('kagoshima','kanoya');
$okinawa = array('naha','nago');

$hokkaido_N = array($asahikawa,$wakkanai);
$hokkaido_S = array($kushiro,$hakodate);
$tohoku_N = array($aomori,$iwate,$akita);
$tohoku_S = array($miyagi,$fukushima,$yamagata);
$kanto_N = array($ibaraki,$tochigi,$gunma,);
$kanto_S = array($saitama,$chiba,$tokyo,$kanagawa);
$tyubu_N = array($nigata,$ishikawa,$toyama,$fukui);
$tyubu_S = array($yamanashi,$nagano,$shizuoka,$aichi,$gifu);
$kinnki_N = array($shiga,$kyoto,$hyogo);
$kinnki_S = array($osaka,$nara,$wakayama);
$tyugoku_N = array($tottori,$shimane);
$tyugoku_S = array($okayama,$hiroshima,$yamaguchi);
$shikoku_N = array($kagawa,$ehime);
$shikoku_S = array($tokushima,$kochi);
$kyusyu_N = array($oita,$saga,$fukuoka,$nagasaki);
$kyusyu_S = array($kumamoto,$miyazaki,$kagoshima,$okinawa);

$hokkaido = array($hokkaido_N,$hokkaido_S);
$tohoku = array($tohoku_N,$tohoku_S);
$kanto = array($kanto_N,$kanto_S);
$tyubu = array($tyubu_N,$tyubu_S);
$kinnki = array($kinnki_N,$kinnki_S);
$tyugoku = array($tyugoku_N,$tyugoku_S);
$shikoku = array($shikoku_N,$shikoku_S);
$kyusyu = array($kyusyu_N,$kyusyu_S);

$east_N = array($hokkaido,$tohoku);
$east_S = array($kanto,$tyubu);
$west_N = array($kinnki,$tyugoku);
$west_S = array($shikoku,$kyusyu);

$east = array($east_N,$east_S);
$west = array($west_N,$west_S);

$japan = array($east,$west);

  echo '<pre>';
  var_dump($japan);
  echo '<?pre>';

  echo $japan[0][1][1][1][1];

 試したこと

何から試したらいいかわかりませんでした。すみません!

 補足情報(FW/ツールのバージョンなど)

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • spookybird

    2018/10/04 08:05

    5次元配列がどういうものかわかっていないのに5次元配列を作ろうとしているという意味がよくわからないのですが、なぜそんなことをする必要があるんでしょうか。

    キャンセル

  • asahina1979

    2018/10/04 08:20

    これは6次元配列なのでは?

    キャンセル

  • moana

    2018/10/04 08:30

    二次元配列の仕組みを学校で習い、応用で5次元を考えてみる課題が出たため、試行錯誤しながら作っています!

    キャンセル

  • moana

    2018/10/04 08:31

    6次元でechoしたらできました!1つ多くなってしまっていたんですね...

    キャンセル

回答 2

checkベストアンサー

+2

echo $japan[0][1][1][1][1];


この部分が配列の最下層まで達していないから、文字列ではない(配列が渡されている)、と怒られています。

echo $japan[0][1][1][1][1][1];


とすればうまくいくでしょう。

何を実現なさりたいのかは存じ上げませんが、データベースなどを使った方がよいと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/10/04 08:35

    ありがとうございます!二次元配列を学校で習った上で、多次元配列を考えてみるという課題が出たため、理解を深めることを目的として作っているだけです!
    自分のわかってない点が絞れてきました!ありがとうございます!

    キャンセル

  • 2018/10/04 08:37

    学校の課題でしたか。
    よかったです。
    がんばってください。

    キャンセル

  • 2018/10/04 09:02

    ありがとうございます!

    キャンセル

+1

5次元配列がなにか、というのを回答します。
まずここが理解できていないことが問題です。PHPどうこう以前に。

まず、1次元配列とは
["1", "2", "3", ...]
こうです。

2次元配列とは

[
  ["1-1", "1-2", ...],
  ["2-1", ...], ...
]


こうです。
単純に「配列の中に配列」が入っています。

一気にすっとばして5次元配列を考えると

[
  [
    [
      [
        ["1-1-1-1-1", "1-1-1-1-2", ...],
        ["1-1-1-2-1", ...], ...
      ],
      [
        ["1-1-2-1-1", ...], ...
      ], ...
    ],
    [
      [
        ["1-2-1-1-1", ...], ...
      ], ...
    ], ...
  ],
  [
    [
      [
        ["2-1-1-1-1", ...], ...
      ], ...
    ], ...
  ], ...
]


こんな構造です。
配列(1)の中に配列(2)、その中に配列(3)、その中に配列(4)、さらにその中に配列(5)です。
日本語で言うと意味不明です。

空間を考えようとすると脳みそが破綻すると思うので諦めてください。
4次元の時点で、一般人が脳内で想像できる空間上にマッピングするのは無理です。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/10/04 09:02

    ありがとうございます!5次元という概念がより鮮明になりました!

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.64%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる