# 二次元配列

| 前回の配列変数は、マスター出来ましたか？ 次は、配列変数の配列変数、即ち、二次元配列変数が、出てきます。 ひまわりの二次元配列は、表計算ソフトなどで使われる、CSV形式になっているので、便利です。

使い方

> 配列変数と、同じ感じです。ただ、指定する番号が２つに増えただけです。

> 変数名前＃横の番号＃縦の番号

> 絵で書くと、↑な、感じです。

> `｛二次元配列のサンプル｝ ロッカー＃０＃０＝「スワップ」 ロッカー＃１＃１＝「akio」 ロッカー＃２＃２＝「Ps」 （ロッカー＃１＃１）を、表示。`

グリッドと合わせて使う

> 前回のリストと同じように、グリッドのアイテムに二次元配列を指定すると、内容が一覧表示されます。

> `｛二次元配列の設定｝ ロッカー＃０＃０＝「名前」 ロッカー＃１＃０＝「特徴」 ロッカー＃０＃１＝「ジ三ーぺイシ」 ロッカー＃１＃１＝「シェッペりソのギタリスト。王道プレイ」 ロッカー＃０＃２＝「フラソク・ザッパ」 ロッカー＃１＃２＝「変態だが神々しい。ユーモアセンス抜群」 ロッカー＃０＃３＝「スラィーブ・フ゛ァイ」 ロッカー＃１＃３＝「進化の体現者。ハイレベル」 ｛グリッド作成｝ ロッカー表を、グリッドとして、作成。 その、アイテムを、ロッカーに、設定。`

> ↓実行結果
> ちょっと、説明が遅れましたが、二次元配列では、

> 変数名＃X列目＃Y行目

> のように、使います。

配列の正体

> ところで、配列変数の正体とは、なんでしょうか？
> 得体の知れない感じがするのですが、配列の中身を、表示させてみると、な〜んだって、気持ちになります。

> `配列＃０＝「要素０の値」 配列＃１＝「要素１の値」 配列＃２＝「要素２の値」 配列＃３＝「要素３の値」 配列と、言う。｛←配列変数なのに要素番号を指定しない｝` |

> どうですか？
> な〜んか、そのまんまですよね。
> では、二次元配列は、どうなってるんでしょうか？

> `｛二次元配列の設定｝ 人物表＃０＃０＝「名前」 人物表＃１＃０＝「年齢」 人物表＃２＃０＝「性格」 人物表＃０＃１＝「ドうえモん」 人物表＃１＃１＝「３０」 人物表＃２＃１＝「おせっかいで涙もろい好漢」 人物表＃０＃２＝「レずか」 人物表＃１＃２＝「３８」 人物表＃２＃２＝「心優しくおっとりとした永遠の少女」 人物表＃０＃３＝「のび犬」 人物表＃１＃３＝「３８」 人物表＃２＃３＝「世界の平和を願う愛国主義者」 人物表と、表示。｛←配列変数なのに要素番号を指定しない｝`

> ↑を、実行すると、↓のような結果が得られます。

> `名前,年齢,性格 ドうえモん,３０,おせっかいで涙もろい好漢 レずか,３８,心優しくおっとりとした永遠の少女 のび犬,３８,世界の平和を願う愛国主義者`

> これを、よく見てみると・・・
> 各行が、半角のカンマ（ , ）で、区切られていますよね。
> 勘の良い方は、お気づきかもしれませんが、これは、CSV形式といって、エクセルや、その他の表計算ソフトなどで、よく使われる形式です。

ファイルへ保存

> では、これを、ファイルに保存してみましよう！
> ファイルに保存するには、

> （ファイル名）へ、保存。

> を、使います。
> これは、特殊変数「それ」の内容を、（ファイル名）へ、保存するという命令です。

> `｛二次元配列の設定｝ 人物表＃０＃０＝「名前」 人物表＃１＃０＝「年齢」 人物表＃２＃０＝「性格」 人物表＃０＃１＝「ドうえモん」 人物表＃１＃１＝「３０」 人物表＃２＃１＝「おせっかいで涙もろい好漢」 人物表＃０＃２＝「レずか」 人物表＃１＃２＝「３８」 人物表＃２＃２＝「心優しくおっとりとした永遠の少女」 人物表＃０＃３＝「のび犬」 人物表＃１＃３＝「３８」 人物表＃２＃３＝「世界の平和を願う愛国主義者」 それは、人物表。 「test.csv」へ、保存。 「test.csv」を、起動。’csvに関連付けられているアプリで開く。`

> そうしたら、実際エクセルで、開けるのかテストしてみましょう。
> | 普通に、エクセルをインストールしていると、xxx.csv というような、拡張子がCSVのものは、エクセルと関連付けられています。 このプログラムを実行すると、このプログラムと同じフォルダに（ファイルに名前を付けて保存してなければ、ひまわりのプログラムがあるフォルダに）"test.csv"というファイルが作られます。 これを、ダブルクリックすると、「あら、不思議！」・・・エクセルで、ひまわりの二次元配列が見られます。

集計・並び替え・機能

> さて、二次元配列変数が、外部アプリケーションと連動できて、便利だというのが、分かって頂けたと思いますが、ひまわりの中で、二次元配列の表を集計したり計算したり、出来ないのでしょうか？

> 実は、簡単に、並び替えや集計が出来ます！
> 以下は、数値順に並び替えをする例です。

> `｛二次元配列へ値設定（カンマ区切りを利用）｝ 価格#0=「商品, 値段」 価格#1=「やせる石鹸, 500」 価格#2=「ゲームウォッチ, 3000」 価格#3=「Gショック, 30000」 価格#4=「たまごっち, 1980」 価格#5=「バイアグラ, 12000」 表を、グリッドとして、作成。 その、アイテムを、価格に、設定。 ソートボタンを、ボタンとして、作成。 その、テキストを、「値段順」に、設定。 その、イベントを、値段順ソートに、設定。 待機。 ＊値段順ソート 表フィールド名=オン。 価格の、1列目を、表数値ソート。 表の、アイテムを、それに、設定。 待機`

> ここでの、ポイントは、表数値ソート命令です。
> これは、

> （二次元配列変数）の、（並び替え基準列）を、表数値ソート

> のように使います。
> この命令を使うと、特殊変数「それ」へ、並び替えを行った結果を返します。
> また、ひまわりの配列変数の番号は、０から始まりますので、上の例では、「１列目」が、指定されています。

> 助けて！
> 上のプログラムを入力したんだけど、エラーが出るんだけど・・・
> ひまわりでは、ある程度、半角文字(例：ABC)と、全角文字(例：ＡＢＣ)は、同じ意味だと認識しますが、普通のプログラム言語では、これを別のものとして認識することが多いです。ひまわりでも、「」の中にある全角文字は、別のものとして処理されますので、二次元配列の文字の区切れには、半角文字のカンマ（ , )を使わなければなりません。

目次へ戻る／次へ