【laravel】多次元配列と連想配列の使い方
個人アプリ作成の中で使った、多次元配列と連想配列についてメモしておきます。
以下のリンク先をベースに実装しています。
【PHP入門】多次元配列・連想配列の使い方と便利な関数を解説! | 侍エンジニア塾ブログ(Samurai Blog) - プログラミング入門者向けサイト
連想配列とは
キーに対応する値を設定できます。例では「案件数がもっとも多い言語は何か」というキーに対して、「Java」という値を設定しています。
また、値を参照するときはキーを指定します。
$data = [ '案件数がもっとも多い言語は何か' => 'Java', ]; echo "<pre>"; print_r($data); echo "</pre>"; echo $data['案件数がもっとも多い言語は何か'];
結果
Array ( [案件数がもっとも多い言語は何か] => Java ) Java
多次元配列について
配列の中に配列を配置したものになります。今回は例は、連想配列の「値」を「配列」にしています。
配列の場合、アクセスするためのキーが自動で数字が割り当てられます。
例では「案件数がもっとも多い言語は何か」というキーに対して、4つの値をもつ配列を設定しています。
値にアクセスするときは「キー」を設定するのですが、配列側のいくつ目の値であるかも指定します。
$data = [ '案件数がもっとも多い言語は何か' => ['C','PHP','Java','Ruby'], ]; echo "<pre>"; print_r($data); echo "</pre>"; echo $data['案件数がもっとも多い言語は何か'][2];
Array ( [案件数がもっとも多い言語は何か] => Array ( [0] => C [1] => PHP [2] => Java [3] => Ruby ) ) Java
さらに多次元化する
今回の個人アプリではさらに多次元化して利用しています。
「案件数がもっとも多い言語は何か」というキーに対して、4つの配列をもつ配列を設定しています。
うーん、言葉にするとわかりにくい。具体的には以下を見てください。
$data2 = [ '案件数がもっとも多い言語は何か' => [[1,1,'C'],[1,2,'PHP'],[1,3,'Java'],[1,4,'Ruby']], ]; echo "<pre>"; print_r($data2); echo "</pre>"; echo '問題番号:' . $data2['案件数がもっとも多い言語は何か'][2][0] . '<br />'; echo '回答番号:' . $data2['案件数がもっとも多い言語は何か'][2][1] . '<br />'; echo '回答内容:' . $data2['案件数がもっとも多い言語は何か'][2][2] . '<br />';
Array ( [案件数がもっとも多い言語は何か] => Array ( [0] => Array ( [0] => 1 [1] => 1 [2] => C ) [1] => Array ( [0] => 1 [1] => 2 [2] => PHP ) [2] => Array ( [0] => 1 [1] => 3 [2] => Java ) [3] => Array ( [0] => 1 [1] => 4 [2] => Ruby ) ) ) 問題番号:1 回答番号:3 回答内容:Java
回答内容だけでなく、問題番号と回答番号も値に設定しています。
データへのアクセスは、[キー][1つ目の配列の順番][2つ目の配列の順番]と指定します。
今回このような複雑な配列を使ったのには理由があります。
- foreach文で画面に表示させるときに便利だから
- 回答結果をDBに登録するために、問題番号と回答番号が必要だったから
詳しくは次の記事で書こうと思います。
あとがき
もっとスマートにやる方法を模索中。