チャチャッとPHPブログ

プログラミング初心者むけPHP学習をまとめています
2020/05/24

【STEP 7】PHPを学ぼう 配列 / 連想配列 / foreach

STEP 7

25
配列をつかおう
#1 基本形

データをかたまりで扱うことができる「配列」と呼ばれるデータの構造があります。

この配列をつかったプログラミングは、様々な要求に柔軟に対応できるため、欠かせない基礎技術になります。

配列とは
つながった連続した変数を「配列」といいます。
番号つきボックスが管理されているロッカーのようなイメージです。

配列の使い所
たくさんのデータを一度に処理することができます。
大量のデータを扱う際に使用します。

配列・書き方
配列の書き方はいくつかあります。
一つには以下のように書いて使います。
サンプルコードをみてみましょう。

サンプルコード

<?php

$medal = array('金', '銀', '銅');
print_r ($medal);

?>

実行結果

Array
(
[0] => 金
[1] => 銀
[2] => 銅
)

サンプルコードの解説

array関数をつかって , (カンマ)区切りで値をいれます。print_r 関数は配列の情報を出力してくれます。

実行結果の「Array」とは配列型であることを示しています。0,1,2の順で金、銀、銅は入っていることを表しています。

このときの各順番の0,1,2は「添字(そえじ)」と呼ばれています。小さく書き「添」えた数「字」です。配列の順番は1からではなく、0からはじまります。

配列・値の取り出し
配列の特定の値の取り出し方です。サンプルコードをみてみましょう。

サンプルコード

<?php

$medal = array('金', '銀', '銅');
echo $medal[0];

?>

実行結果


サンプルコードの解説

$medal[0]のように[添字]を入れることで、番号に対応する値を取り出すことができます。

配列の順番は0からはじまります。1番先頭は0になります。

◎変数と配列のちがい・まとめ


配列・書き方いろいろ
配列の書き方はいくつかあります。
下の書き方はすべて同じ配列が作られます。

◎タイプ1
$medal = array('金', '銀', '銅');

◎タイプ2
$medal = ['金', '銀', '銅'];

◎タイプ3
$medal[0] = '金';
$medal[1] = '銀';
$medal[2] = '銅';


配列・値の追加と変更
配列の値の追加と変更方法です。サンプルコードをみてみましょう。

サンプルコード

<?php

$medal = array('金', '銀', '銅');
$medal[3] = 'てつ'; // 追加
$medal[0] = 'ゴールド'; // 変更
print_r ($medal);

?>

実行結果

Array
(
[0] => ゴールド
[1] => 銀
[2] => 銅
[3] => てつ
)

サンプルコードの解説

$medal[3]に「てつ」を入れることで4番目の要素を追加しています。
また、すでにある先頭の[0]の文字を「ゴールド」に変更することができました。

(補足)下記の方法でも、要素を追加できます。

$medal = array('金', '銀', '銅');
$medal[] = 'てつ';// 追加

最後に要素を追加であれば、添字なしの[]のみで追加できます。

26
配列をつかおう
#2 連想配列

前回は配列に(0,1,2…)のような添字と値がペアで自動的に入っていました。

今回はキーとして名前をつけて値とペアを入れることもできます。このデータ構造を連想配列といいます。

名のついた添字は「キー」とも呼ばれます。

番号ではなく、「名前のついた値のデータのまとまり」をつくることができます。データの管理や値の取り出しがよりわかりやすくなります。

サンプルコードをみてみましょう。

サンプルコード

<?php

$medal = array(
   'gold' => '金',
   'silver' => '銀',
   'bronze' => '銅'
);
print_r ($medal);

?>

実行結果

Array
(
[gold] => 金
[silver] => 銀
[bronze] => 銅
)

サンプルコードの解説

キーと値がペアの配列ができました。

連想配列・値の追加と変更
連想配列の値の追加と変更方法です。
前項の配列時と基本おなじです。
サンプルコードをみてみましょう。

サンプルコード

<?php

$medal = array(
   'gold' => '金',
   'silver' => '銀',
   'bronze' => '銅');
$medal['iron'] = 'てつ'; // 追加
$medal['gold'] = 'ゴールド'; // 変更
print_r ($medal);

?>

実行結果

Array
(
[gold] => ゴールド
[silver] => 銀
[bronze] => 銅
[iron] => てつ
)

サンプルコードの解説

連想配列でも追加と変更は要領は同じです。
$medal['iron']に「てつ」が追加され、$medal[gold] が「ゴールド」に変更されました。

27
配列をつかおう
#3 foreach関数

くり返し文は、for文やwhile文がありました。配列には専用のくり返し文である 「foreach文」 があります。

foreach文はとても有能です。
foreach文は、配列の要素の分だけ繰り返します。無限ループになりにくいので安全に使うことができます。

foreachは、次のような形式で書きます。

foreach(配列 as キー => 値){
処理
}

◎または省略形の

foreach(配列 as 値){
処理
}


サンプルコードをみてましょう。

サンプルコード

<?php

$medal = array(
   'gold' => '金',
   'silver' => '銀',
   'bronze' => '銅');
foreach($medal as $key => $val){
   echo $key . 'の英語は' . $val . '<br/>';
}

?>

実行結果

goldの英語は金
silverの英語は銀
bronzeの英語は銅

サンプルコードの解説

foreach文により、$medal配列のキーと値のペアを1ペアずつ取り出します。そして、全ペアを最後までくりかえしていきます。

順番に並んでいるカップルを順に全員通していくようなイメージです。

$keyに「gold」のようなキーが入り、$valに値の「金」が入ります。毎回1ペアずつくり返して文字を表示していきます。

連想配列でいれたキーと値のペアでそれぞれの英単語の和訳の文章をつくることができました。

このように配列でいれた全情報を一覧で表示することができます。

さらに、表示内容はすべて自分の好きなように変更もできます。

WEBでの一覧表示などによく使われます。

DB(データベース)から情報をとってきて、上の方法と同様に、配列にしまい、一覧で表示しています。一覧表示のからくりの正体はこれです。


(補足)とても便利な配列のくり返し文

「配列の全ての要素について処理を加えたい…」


ということがよくあります。
配列内のすべての情報をくり返し文によって、上からなぞっていくことを「走査する」といいます。

配列をつかったくり返し文は、様々な要求に柔軟に対応できます。そのため、多くの場面で使われます。

例として 先の金銀銅の文に「重さ」もくわえた文章をつくってみましょう。

前項から書いている「$medal配列」に下のような金属の重さ情報をもつ「$omosa配列」を加えて考えてみます。サンプルコードをみてましょう。

サンプルコード

<?php

$medal = array(
   'gold' => '金',
   'silver' => '銀',
   'bronze' => '銅');
				
$omosa = array( 
   'gold' => '200g',
   'silver' => '110g',
   'bronze' => '80g');

foreach($medal as $key => $val){
   $gram = $omosa[$key];
   echo $key . 'の英語は' . $val .' 重さは' . $gram . '<br/>';
}

?>

実行結果

goldの英語は金 重さは200g
silverの英語は銀 重さは110g
bronzeの英語は銅 重さは80g

サンプルコードの解説

$gram = $omosa[$key]; で各金属の重さを取得してます。

$medal と $omosa はキーが同じなため、ひとつずつ回ってくる$keyを利用して$omosa から値をとりだしています。

あとは重さ変数 $gram をつけてあげるだけです。


配列でのくり返し文は有用で必ずでてきます。
自分の好きなように一覧表示ができるため、ぜひ試してみてください。

記事

カテゴリ

About me

Name : sin (@Sin_Programming)
ディレクター | プログラマ | プログラム開発15年目 | PHP/JavaScript/Swiftが好きです。 プログラミング初心者の方向けのPHP学習iPhoneアプリ「チャチャッとPHP」を作成しました。 PHPプログラムをムダなく学習できる方法としてまとめています。
iPhoneアプリ「チャチャッとPHP」8日で覚えるPHP