【初学者が最初につまづく】連想配列の使い方から値の取得方法を解説します

今回は連想配列について解説します。

連想配列は通常の配列とは違い、index番号で値を管理するのではなく、実際の名前を使用して値を管理します。

この時点で、「ん?」って感じですよね。。。

プログラミングの本で勉強すると、この辺りから説明がかなり続いて嫌気が指してくることではないでしょうか?

その気持ち、とてもよくわかります。

プログラミングを勉強し始めたちょうど1年前。

連想配列の章を読んだときに、「配列?連想配列?何それ?」

本をそっと閉じて、

「プログラミングはやっぱり諦めよう・・・」

そう思いました。

そんなとき、ある人がこう言ってくれたんです。

「もう少し頑張ってみな。ここを乗り越えたら小さなプログラムが作れるようになるから」

だから、僕はみなさんに同じことを言いたいです。

「もう少し一緒に頑張りましょう!」

この言葉に嘘はなく、配列と連想配列が書ければ、ちょっとずつプログラムが作れるようになります。

今日のブログが、独学の後押しになることを願っています。

  • 本を読んだけど、連想配列の使い方がいまいちわからない
  • 連想配列はすでに学習してきたけど、もう一度復習したい
  • 実際に連想配列を使って簡単なミニプログラムが作りたい

今日のブログはこんな方におすすめです。

では、一緒に学習していきましょう。

PHPにおける連想配列と配列との違いは?

前回のブログで配列について説明しました。

詳細は【配列を使った繰り返し構文】PHPで配列の書き方を解説しますで確認できます。

連想配列もデータを格納するために使用されるのですが、値の管理の仕方が少し違います。

冒頭でも述べましたが、配列はindex番号で値を管理し、連想配列は実際の名前を使って値を管理します。

他言語を学んだ人はお分かりかと思いますが、

配列は、[]

連想配列は、{}

で記述されることが多いです。

では、PHPはどうやって記述するのでしょうか。

こういう時はリファレンスを確認する癖をつけましょう。

PHP においては添字配列と連想配列の間に違いはなく、配列型は 1 つだけで、 同じ配列で整数のインデックスと文字列のインデックスを同時に使えます。

どうやらPHPは、配列も連想配列も[]を使用して、記述するようです。

ちょっと違和感を覚える人もいるかもしれませんが、PHPの配列と連想配列には違いはないようです。

それでは、実際に書いていきましょう。

連想配列を書いてみる

言葉で聞くと難しいですが、書いてみると理解が深まります。

<?php
$keihi = ['koutuhi'=>1000,'book'=>2000,'other'=>200];
?>

書いてみると、配列とほとんど変わらないですよね。

ちなみに、僕の配列のブログを読んでくれたならお気づきかもしれませんが、これは僕の経費申請プログラムの連想配列版です。(笑)

中身がバレてちょっと恥ずかしいですね。(汗)

ただこうして書いてみると、配列よりも実際の名前で値を管理しているので、とても分かりやすいですよね。

連想配列の良さはここにあります。

実際の名前で値を管理できるので、パッとみたときに何がどの値を指しているのかが、とても分かりやすいですよね。

また、配列の場合だと、中身から値が消えるとindex番号が変わってしまいます。

そのため、値を添え字で出したときに、「値が違う!」なんてがたまにあるのですが、連想配列にそれはないです。

では次に、連想配列からどうやって値を取り出すのか、を実際に見ていきましょう。

連想配列から値を取り出す

配列をマスターしている方は、すでにお気づきですよね?

そう、その通りです!

連想配列から値を取り出す時も、添え字を使用します。

こうやって少しずつ書いていくと、だんだん点が線になっていきますよね。

スティーブジョブスも、コネクティングドットなんて言葉でスピーチしていましたよね!(いや、意味が違いすぎましたね、すみません。。。w)

冗談はさておき、実際に書いていきましょう。

<?php
$keihi = ['koutuhi'=> 1000,'book'=>2000,'other'=>200];
print($keihi['koutuhi']);
?>

理屈がわかってしまえば、全然難しくないですね。

ここまできたら、もう怖いものなしです。

このまま勢いに乗って、繰り返し構文も書いていきましょう。

foreachを使用して連想配列から中身を取り出す

もうここまできたら、言葉はいらないですね。

<?php
$keihi = ['koutuhi'=> 1000,'book'=>2000,'other'=>200];

foreach ($keihi as $key=>$value) {
  print($key. ':'. $value);
}
?>

配列と比較してみると、違いが見えてきます。

<?php
$keihi = [1000,2000,200];

foreach ($keihi as $value) {
  print($value);
}
?>

連想配列を使用する場合は、foreachの引数に、

管理する名前(key) => 値(value)

を書いていますね。

連想配列は、キーとバリューの関係で値を格納します。

それと同様に、キーとバリューをforeachにも指定してあげるんですね。

簡単なプログラムを書いてみよう

最後に簡単なプログラムを書いてみましょう。

ここまでくれば、小さいプログラムなら簡単に作ることができます。

冒頭でお話したある人に言われたときに作ったプログラムを紹介します。

今月の残り残高計算アプリです(汗)

<?php
$keihi = ['kyuryo'=> 100000,'chokin'=>20000,'syuppi'=>-80000];
$i = 0;
foreach ($keihi as $key=>$value) {
  $i = $i + $value;
}
print("今月の残り残高は\n". $i);
?>

もちろん、お金はダミーです(笑)

連想配列を使えば、どんな入金があって、どんな出費があるのかを簡単に管理することができます。

こうした小さなプログラムで、練習すると知識の定着に繋がります。

ぜひみなさんも連想配列を使って、小さなプログラムを書いてみてください。

まとめ

  • PHP配列と連想配列に違いはない
  • 連想配列は実際の名前(key)と値(value)で管理することができる
  • foreachも配列ど同様に使用できる
  • 連想配列を学べば、簡単なプログラムが作成できる

以上になります。

少し大変でしたよね。

お疲れ様でした。

少し休憩して、また学習頑張ってください。

PS.

月末に近づくにつれて、お金が厳しくなるのは僕だけでしょうか?

共感していただけたら、嬉しいです。

コメント

Comments are closed.