0
0

More than 1 year has passed since last update.

9: 配列途中, 連想配列

Posted at

配列 昨日の途中

$data = [‘河野’, ’子安’, ’及川’, ’中辻’, ’地引’];
          [0]     [1]    [2]    [3]     [4]

このように配列の中身を参照しているのが上。

ブラケット([~])で括られた部分は、インデックス番号または添え字と呼ばれ、配列の何番目の要素を取り出すのかを表す。

上の例では、配列\$dataに5つの要素が格納されているので、指定できるインデックス番号は0〜4の範囲となる。

配列へのアクセス

$配列名[インデックス番号]

ブラケット構文を利用する事で、配列の個々の要素に値をセットすることもできる。

具体例

<?php
$data[0] = ‘染谷’;
$data[1] = ‘伊藤’;
$data[2] = ‘河野’;
$data[3] = ‘笠川’;
//上記は配列$dataを新規に作成

$data[1] = ‘後藤’;
//1番目の要素を書き換え

$data[] = ‘榊原’;
//末尾に要素を追加

echo $data[4];
//結果: 榊原

ブラケットでインデックス番号が指定されている他は、スカラー型の変数に値をセットするのと同じ要領。

すでに存在するインデックス番号が指定された場合には、既存の値が書き換えられ、
インデックス番号が省略された場合には「その時点での最大インデックス番号+1」が自動的に割り振られる。

特にインデックス番号を省略した構文は、要素を順に配列の末尾に追加していきたいという際によく利用するので、きちんと覚えておく。

配列の内容を確認する

作成した配列の内容を手っ取り早く確認したい場合には、print_r関数を利用すると便利。

print_r関数は、配列をはじめ、オブジェクトなど複合型の変数を見やすい形で出力する。

<pre>
<?php
$data[0] = ‘染谷’;
$data[1] = ‘伊藤’;
$data[2] = ‘河野’;

print_r($data);


//実行結果

Array(
  [0] => 染谷
  [1] => 伊藤
  [2] => 河野

<pre>タグを利用しているのは、そのままでは結果に含まれるスペースや改行が無視されてしまうから。

連想配列の基本

複数の値を一つに束ねる配列は非常に便利だが、値を参照するために使えるのがインデックス番号(数値)だけだと不便に感じることもある。

そこで登場するのが連想配列である。

連想配列では数字キーの代わりに文字列キーを使って要素を管理する。

例えば下記のような住所録を想定してみる。

名前 住所
山田太郎 千葉県府中市東町1-1-1
山口百恵 広島県福岡市北町2-2-2
矢沢永吉 群馬県三次市南町3-3-3
藤子不二雄 埼玉県豊田市西町4-4-4
ドラえもん

このような表を通常の配列で表現しようとすると、次のようになる。

<?php
$names = [‘山田太郎’, ’山口百恵’, ’矢沢永吉’, ’藤子不二雄’, ’ドラえもん’];

$addresses = [‘ 千葉県府中市東町1-1-1’, ’ 広島県福岡市北町2-2-2’, ’ 群馬県三次市南町3-3-3’, ’ 埼玉県豊田市西町4-4-4’, ’机’];

名前は\$names、住所は\$addressesで、それぞれ個別の配列として表している。

しかし、このような状態は名前と住所の対応関係が分かりにくいという意味で好ましく無い。

そこで連想配列を利用すればこのような表を一つの変数で管理できる。

$members = [
   ‘山田太郎’ =>   ‘千葉県府中市東町1-1-1’,
   ‘山口百恵’ =>   ‘広島県福岡市北町2-2-2’,
   ‘矢沢永吉’ =>   ‘群馬県三次市南町3-3-3’,
   ‘藤子不二雄’ => ‘埼玉県豊田市西町4-4-4’,
   ‘ドラえもん’ => ‘机’,
];

echo $members[‘山田太郎’];
//結果: 千葉県府中市東町1-1-1

連想配列を生成するには、通常配列の場合と同じく[~]を使う。

連想配列の生成

$配列名 = [キー1 => 値1, キー2 => 値2,………];

通常配列の場合と異なるのは、連想配列では「キー名 => 値」の形式でキーと値との対応関係を表しているという点。

記号「=>」は、キー名を値に対応させなさい、という意味。

キー名には任意の文字列を指定できるが、文字通り値を取り出すためのキー(手がかり)となる情報。
重複することはできない。

通常配列の場合と同じく、ブラケット構文を利用して、連想配列に新規の要素を追加したり、既存の要素を書き換えたりもできる。

$members[‘ダンテ’] = ‘魔界’;
//新たな要素を追加

$members[‘山田太郎’] = ‘段ボール’;
//既存の要素を書き換え

10: 多次元連想配列から

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0