• ベストアンサー

2次元配列について

プログラミング初心者です。2次元配列のイメージがつかめません。教えてください。 例えばExcelの表があり、A列に名前のデータ、B列にその人の住所のデータがあったとします。プログラミングで1次配列の値だけ取得するような処理が書かれていた場合、名前のデータだけを取得しているのでしょうか?因みに$var[0]というように数字ではなく、何かを示す名前になっています。例えば$var[name0]や$var[name1]のようになっています。これが$var[name0][place0]や$var[name1][place0]みたいになっていたら住所のデータを取得するのでしょうか?

  • PHP
  • 回答数4
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • bm_hiro
  • ベストアンサー率51% (200/388)
回答No.4

あぁ、ごめんなさい。肝心なところ書き忘れました。 > 例えば$var[name0]や$var[name1]のようになっています。 そういう取得の仕方をしてくるときは、カラーボックス1個 丸ごと 取ってきてる感じです。 > これが$var[name0][place0]や$var[name1][place0]みたいになっていたら住所のデータを取得するのでしょうか? その通り。 どのカラーボックスの何段目かをピンポイントで指定して、その中身を取ってきているだけ。

ymoshimoshi
質問者

お礼

わかり易く教えていただきありがとうございました

その他の回答 (3)

  • nak777r
  • ベストアンサー率36% (49/136)
回答No.5

列の数が、名前(列)と、住所(列)、の2列の場合 $var[行][列] は内部で $var[(行×2+列)] と判断してくれているだけ 三次元の場合、仮に、2列3行で1段とした場合、 $var[段][行][列] は内部で $var[段×(3×2)+行×2+列] と判断してくれているだけです

  • bm_hiro
  • ベストアンサー率51% (200/388)
回答No.3

俺の頭の中では 配列のイメージは カラーボックスみたいなもの。 二次元なら それが 横に並んでる。 左から、name0という名前のカラーボックス、name1という名前のカラーボックスが並んでいる。 それぞれの上から一段目には place0という名前が付いていて、その中には 「住所」が入っている。 例えば二段目には building0という名前が付いていて、その中には「建物名」が入っている。 そんなイメージです。あくまでも、俺の頭の中では。 三次元までは こんなイメージで対応できますが、四次元になると配列地獄突入です。 >>1の人、申し訳ないです。 俺自身にそんな影響力があるとは思わないけど、「使わなくて問題が起きない」所では、シングルクートを書かない書き方は、何度か俺がここで提示してしまってる気がします。 俺はプロではなく、自分の環境で問題なく動いてくれれば それでいいので、そんな書き方してました。 正直、自分も人のソース見てて配列のキーにシングルクォートがないと「定数?」とか思うことがあります。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

エクセルと比較するのであれば $rows[1]["a"]="aaa"; $rows[1]["b"]="bbb"; $rows[1]["c"]="ccc"; $rows[2]["a"]="ddd"; $rows[2]["b"]="eee"; $rows[2]["c"]="fff"; $rows[3]["a"]="ggg"; $rows[3]["b"]="hhh"; $rows[3]["c"]="iii"; のようなデータを持つと「a1」のセルに「aaa」、「b1」のセルに「bbb」・・・ 「c3」のセルに「iii」というような表だと思えばイメージしやすいかと 実際二次元といっても各行のデータ件数が一緒である必要はないので もう少し柔軟な運用はできますが・・・

関連するQ&A

  • 多次元配列の扱い方

    PHPバージョン5.2.4を使っています。 次のような文字列が入っている多次元配列を foreachなどのループを使ってその値を取り出して扱いたいのですが、 取り出した値には配列(二次元以降の値)も含まれてるので 簡単には取り扱いできません・・・ print_rやvar_dumpを使えば値は全て表示されるのですが、 あくまで表示ではなくて値を取り扱いたいのです。 そのようなことができる関数などはあるのでしょうか? $arr[0][0] = 'a'; $arr[0][1] = 'b'; $arr[1] = 'c'; $arr[2][0][0][0] = 'd'; $arr[2][0][0][1] = 'e'; foreach ($arr as $value) { $value//←ここで値を扱いたいけど、配列も含まれてるので・・・ }

    • 締切済み
    • PHP
  • SESSION変数の2次元配列

    ソースコードに $_SESSION[’place'][1][2] と記述されていました。 記述内容を考えていたのですが $_SESSION[’place']に、[1][2]=値 の2次元配列を格納するという 考え方で間違いないでしょうか? $_SESSION[’place'][1][2] は、3次元配列( =多次元配列)ではないと、いう考え方で あっていますでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • Javascriptで二次元配列で高次元の配列サイズを取得する方法を教えてください。

    Javascriptで二次元配列で高次元の配列サイズを取得する方法を教えてください。 var data = [ [1,2,3], [4,5,6], [7,8,9] ]; for (var i = 0; i < data.length; i++){ for (var j = 0; j < data[i].length; j++){ <--- ここで lengthのオブジェクトがNullというエラーになります。 alert(data[i][j]); } } よろしくお願いいたします。

  • 【Javascript】多次元配列の位置取得

    Javacript初心者です。 多次元配列の特定要素を含む配列の位置(何番目の配列要素か)を取得したいのですが、 わからず、お力を貸していただけないでしょうか。 下記testArrayにおいて、bloodの値に「ab」を持つ配列要素が何番目かを取得したいです。 この場合、「3」番目ということを取得したいです。 ---------- var testArray = [ {"name":"yamada","age":30,"weight":62,"blood":"a"}, {"name":"tanaka","age":28,"weight":58,"blood":"b"}, {"name":"kamimura","age":46,"weight":65,"blood":"o"}, {"name":"takahashi","age":21,"weight":70,"blood":"ab"} ]; ---------- 単純に、下記のようなindexOf要素では調べることができませんでした・・・ testArray.indexOf("ab") 多次元配列での要素の位置取得をお教えいただけませんでしょうか。

  • 2次元配列の値の受け渡しについて教えてください

    お世話になります。 phpで2次元配列の値の受け渡しについて教えてください。 A.phpファイルからB.phpファイルに2次元配列の値を渡したいと考えています。 出来ればPOSTで2次元配列を送りたいと考えていますが、そもそもPOSTで2次元配列を送ることはできるのでしょうか? たとえば [A.php] $DATA = array( array('name'=>"tanaka", 'age'=>"20"), array('name'=>"sasaki", 'age'=>"30"), ); をB.phpファイルに送るにはどうすれば良いのでしょうか? どなたか教えて頂けないでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHP 多次元配列変数のデータ受け渡し。

    PHP 多次元配列変数のデータ受け渡し。 こんばんは。 先日からPHPでホームページを作成しています。 この度、二次元配列に代入した数値(文字列)を 二次元配列そのままで次のページに受け渡したいと考えています。 ※また、同時に新しく入力した値も受け取りたい。下記の name="data" の様に。 《1page.php》 → 《2page.php》 の受け渡しをする場合、 《1page.php》二次元配列作成 <?php for ($i=0; $i<10; $i++) { $test[] = array($_POST['moziretsu'],$_POST['suuretsu'],$_POST['suuretsu']); //文字・数字は毎回異なります。 } ?> <html> <body> <?= $test[2] ?><br> <?= $test[4] ?><br> <form action="2page.php" method="post"> <input type="text" name="data"><input type="submit" name="submit" value="次"> </form> </body> </html> 《2page.php》二次元配列受け取り <?php $aaaa = $_POST['data']; ?> で、新規に入力した数値は取得出来ても 二次元配列の $test はどの様に取得すれば宜しいのでしょうか? グーグル等で検索させてもらっても 希望の記事に辿り着かず困っております。 もしかしたら出来ないかも知れないので その場合は1page.phpで二次元配列をしないで 2page.phpにデータを送るり、2page.phpで二次元にする等の方法を考えなければなりませんし・・・。 書き方も悪くとても小さい初歩的な質問かとは思いますが 何卒、宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • 多次元配列はなぜ必要???

    なぜ多次元配列というものが必要なのでしょうか? 長さ10の1次元配列と、2行5列の2次元配列だと、記憶できる量は同じではないですか? よく2次元配列を表に例えて「表のように使います」と説明しているサイト等がありますが、 DBと違って配列は添え字でしか管理できないんだか、表のように考えるメリットもよくわかりません。 更にもっと謎なのが3次元以上の配列の存在です。 これは実際に使っている人はいるのでしょうか・・・?

  • 多次元配列

    初歩的な質問ですみません。 PHPプログラミングでの質問です。 仮に、多次元配列Aに、 Array( [0] => Array ( [0] => 6 ) [1] => Array ( [0] => 2 [1] => 1 ) [2] => Array ( [0] => 0 [1] => 5 [2] => 4 ) ) 多次元配列Bに、 Array( [0] => Array ( [0] => りんご ) [1] => Array ( [0] => ぶどう [1] => パイナップル ) [2] => Array ( [0] => みかん [1] => すいか [2] => メロン ) ) のように値が入っている場合、配列Aの値を参照して 値の大きいものから順に、それに対応する配列Bの値を取り出し、 あたらしい配列Cに代入する処理の書き方を教えて下さい。 上記の例ですと、配列Cが、 Array ( [0] => りんご [1] => すいか [2] => メロン [3] => ぶどう [4] => パイナップル [5] => みかん ) となるようにしたいです。 よろしくお願いします。 長文失礼しました。

    • ベストアンサー
    • PHP
  • フォームを通さずに2次元配列の値の受け渡しについて教えてください

    お世話になります。 以前にも質問させて頂きましたが、うまくいかずもう1度質問させてください。 phpで2次元配列の値の受け渡しについて教えてください。 A.phpファイルからB.phpファイルに2次元配列の値をフォームを通さずにPOSTで渡したいと考えています。 処理上、2次元配列のままB.phpファイルに値を渡したいと考えています。 そもそもPOSTで2次元配列を送ることはできるのでしょうか? その他の方法で2次元配列のままB.phpファイルに渡すことが出来るのであれば、その方法も教えて頂きたいのですが。 たとえば [A.php] $DATA = array( array('name'=>"tanaka", 'age'=>"20"), array('name'=>"sasaki", 'age'=>"30"), ); をB.phpファイルに送るにはどうすれば良いのでしょうか? ※2次元配列のサイズは可変です。 どなたか教えて頂けないでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • 多次元配列の入れ替え

    いつもお世話になります。 PHPで多次元配列の入れ替えについて悩んでおります。 以下のようなデフォルトの配列から、整形後の配列 へ変換したいのですが、どのように扱ってよいか 頭が回らず困っています。 2次元目のクラスが等しいもののidをキーとして、 名前を値としたいのですが。。。 どうぞ宜しくお願いします(>へ<) //デフォルトの配列 Array (   [0] => Array     (       [id] => 1       [class] => A       [name] => 佐藤     )   [1] => Array     (       [id] => 2       [class] => A       [name] => 山下     )   [2] => Array     (       [id] => 3       [class] => B       [name] => 田中     )   [3] => Array     (       [id] => 4       [class] => B       [name] => 高橋     ) ) //整形後の配列 Array (   [A] => Array     (       [1] => 佐藤       [2] => 山下     )        [B] => Array     (       [3] => 田中       [4] => 高橋     )      )

    • ベストアンサー
    • PHP

専門家に質問してみよう