前回までの内容はこちら。
今回は、パッと見て「この場合どうやるんだっけ・・・」となりがちな、配列や連想配列が入れ子構造になっている状態のデータの操作方法について解説していきます。いわゆる2次元構造というやつですね。
ケース①:[[],[],[]]
最もシンプルな、配列の中に配列が存在する2次元配列です。
通常の配列の場合は「array[0]」の様に記述すれば配列の先頭にアクセスする事が出来ますが、今回のケースでは後ろにもう一つ添え字指定の「[]」を追加します。
「array[0][0]」という感じですね。
ではまず以下の様な2次元配列データが、変数 array に格納されていると仮定します。
array = [[A, B, C, D] ,[E, F, G, H] ,[I, J, K, L]]
この中から「H」のデータを取り出したい場合は、以下の様な形で指定します。
array[1][3]
2次元配列は”表”として考えると分かり易いですね。
行列の線を引いて表の様にしてみると、どのデータにどの様な形でアクセスすれば良いかが一目で分かります。
ケース②:[{},{},{}]
これは 連想配列 を 配列 として持っているパターンです。
ショッピングサイトなどからデータをJSON形式で受け取ると、この様な形になっている場合が多い様に感じます。
では早速実例と共に記述方法を紹介していきます。
[ { "item_id":1234, "title":"Tシャツ", "price":3900, "stock":10, }, { "item_id":12345, "title":"ロングTシャツ", "price":4900, "stock":20, } ]
例えば上記の構成になっているオブジェクトの配列データが変数 array に格納されているとして、2つ目の”item_id”のデータを取得しようとした場合は以下の記述となります。
array[1][“item_id”]
または
array[1].item_id
と書く事が可能です。
連想配列からの値の取り出し方法は2通りありますので、場合によって使い分けて下さい。
ケース③:{KEY1:[],KEY2:[],…}
これはベースが連想配列で、キーに対応する値が配列になっているというパターンです。
例としては以下の様な構成となります。
{ key1 : ["val1", "val2", "val3"], key2 : ["val4", "val5", "val6"], key3 : ["val7", "val8", "val9"], }
こちらが変数 map に格納されていると仮定した場合に「key2の”val5″」を取り出したい場合は、以下の様な記述となります。
map[“key2”][1]
または
map.key2[1]
と書く事が可能です。
ケース④:{KEY1:{},KEY2:{},…}
これはベースが連想配列かつ、キーに対応する値も連想配列になっているというパターンです。
例としては以下の様な構成となります。
{ key1 :{ subkey1 : subval1, subkey2 : subval2, subkey3 : subval3, }, key2 :{ subkey1 : subval1, subkey2 : subval2, subkey3 : subval3, }, key3 :{ subkey1 : subval1, subkey2 : subval2, subkey3 : subval3, }, }
こちらが変数 map に格納されていると仮定した場合に「key2の”subkey2″の”値”」を取り出したい場合は、以下の様な記述となります。
map.key2[subkey2]
または、
map.key2.subkey2
または、
map[key2][subkey2]
または、
map[key2].subkey2
と、それぞれ書く事が可能です。
連想配列1つにつき2通りの記述方法があるので、全部で4通りの書き方があります。
もちろんですが、どの書き方でも得られる値は同じです
理解していれば単純な事なんですけど、久しぶりでど忘れしている時なんかは「あれ・・・この場合どうやるんだっけ・・・?」ってなりますよね。
サンプルを探そうにも、丁度目的の形のものが見付からなかったりで探すのについつい時間が掛かってしまったり・・・
基本的にはケース①~④の4パターンの組み合わせを覚えていれば何とかなると思います。
では今回は以上となります。