多次元配列と行列
多次元配列は配列の中にさらに配列で定義します。数学でいうとi 行、j 列の行列という考え方です。
行列はゲーム・DB・機械学習などの計算で利用
(i, j) のセルの中に数字で入れて行列を作成してみます。この行列を使った計算は、ゲーム開発(2D、3D)や機械学習などで頻繁に利用されるので、データ構造には慣れておくとよいでしょう。
Excel で考える
難しく見える多次元配列も2次元であれば、横が行、縦が列のようにExcel の表として視覚化してみるとよいでしょう。
さらに深い構造の多次元は一度に視覚化することは難しいですが、Excel のセルの中にさらに行列をいれて繰り返すことになります。
行列をプログラムで考える
まず空の多次元配列を作ってみましょう。 空のデータとして [ ] にデータ行 [ ] を3行入れます。
Excel からプログラムの配列をイメージ
1行目1,2,3,4,5、2行目6,7,8,9,10のデータをExcel で作成しました。
これを多次元配列で定義してみます。配列のインデックスは 0 からはじまるので 1行目は 0 になります。
多次元配列の定義と確認
多次元配列を定義し、body 内で var_dump() で確認してみましょう。
結果
3行のデータ(配列)が表示されました。
多次元配列のデータ取得
多次元配列の行データを取得する
多次元配列の最初のインデックスは行です。1行目の配列を取得するには index = 0 でアクセスします。
結果
1行目の配列を取得できました。
行から列データを取得する
取得した行データから、列データを取得します。
結果
行と列のインデックスでデータを取得する
行と列のインデックスを一度に指定して取得できます。
rows の 2行3列のデータを取得してみます。
結果
連想配列の多次元配列
連想配列と多次元配列を組み合わせると、データベースで利用するような構造で定義できます。
配列に空の配列を入れる
配列に空の配列を3行(3人分のデータ)定義します。
Excel と多次元連想配列
連想配列で設定したユーザ情報を、配列で定義します。Excel でイメージするとよいでしょう。
これをプログラムで定義すると以下のようになります。
多次元連想配列の定義と表示
以下の $users から配列のインデックスを指定して一人ずつつの name をHTML表示してみましょう。
$users からインデックス = 0, 1, 2 のユーザを取り出し、キーがnameの値を表示します。
結果
ユーザの名前をリスト表示できました。
- Alice
- Bob
- Chris
問題1
多次元配列 $drinks から「アイスコーヒー」を、配列のインデックスを指定してすべてHTML表示してみましょう。
問題2
多次元配列 $scores の「68」のデータを配列のインデックスを指定して $new_score の値で更新してみましょう。
問題3
以下の商品の表を、多次元連想配列 $items で作成してみましょう。
id | name | price | is_sale |
---|---|---|---|
1 | コーヒー | 120 | true |
2 | 紅茶 | 150 | false |
3 | ほうじ茶 | 100 | true |
問題4
問題3の $items からほうじ茶の価格をHTMLで表示してみましょう。
問題5
問題3 の $items に以下のデータを追加し price を降順(大きい)に並び換えます。その結果、1番目の name と price を表示してみましょう。
id | name | price | is_sale |
---|---|---|---|
4 | オレンジジュース | 180 | false |