PHP基礎講座:初心者向け 配列と連想配列とForeachの理解

PHPプログラミング


Warning: Undefined variable $content in /home/c9099599/public_html/dstrikes.net/wp-content/themes/cocoon-child-master/tmp/content.php on line 76
この記事は 約9 分で読めます。

昨日友達から連絡があってPHPを覚えようと思うと言われヤル気を出したのでこの機会にPHP講座をちょっと書いてみようと思う。

PHPなどのプログラムを使うに当たって非常によく使う関数Foreachと配列について書きたいと思います。かなりわかり易く書くつもりなので、理解出来るまでじっくり読んで欲しいと思います。

スポンサーリンク

配列の作り方(Array)

// 配列の作り方は主に4種類ぐらいあります。
$x = array( '0' => 'abc', '1' => 'def');
// この0とか1と書かれている部分はKeyと呼びまして変数xの中のラベルみたいなものです。
echo $x['0']; 
// このようにすると abc が表示されます。

// 先程の key は指定しなくても問題はありません 指定しない場合の書き方はこうなります
$x = array( 'abc','def');

これでも結局は同じ結果になります。
Keyを指定しない場合は自動的に01234…と自動割り振りされて行きます。
同様にabcを呼び出したい場合は

echo $x['0'];

こうするだけで先ほどと同じ結果 abc が表示されます。
Keyに関しては指定する場合は数字以外でも自由に設定する事が出来ます。

$x = array(
	'item' => 'りんご',
	'price' => '100',
	'color' => '赤'
	);

こんな風にしてショッピングカートでお客さんがカートに入れた内容を記録するように使う用途も考えられますよね。

ダイレクトに変数を設定したい場合はこのようにします。

$x['item'] = 'りんご';
$x['price'] = '100';
$x['color'] = '赤';

こうしても同じです。
用途や場面に応じて使い所があるのでこう言うやり方もあるんだーぐらいに覚えてて貰うと良いと思います。
実例で言うと 上記の様な配列で後からpriceを200円にしたくなった場合には

$x['price'] = '200';

これで先程作った配列の中身のPriceの中身だけが変更されます。

またPHP5.6以上での配列の作り方はより簡略化されて居てarrayと言う文字を使わなくても配列を作る事が出来てしまいます。

$x = [ 'item' => 'りんご',
'price' => '200',
'color' => '赤',
];

はい こんな感じで大カッコを使うことでArray(配列)を作ることが出来るのです。
こっちの方がシンプルで使いやすいですね。
現バージョンのPHP7系でもこの書き方が採用されてて今後もこの書き方がメジャーになるのでこの方法で覚えてしまいましょう。

Foreachの理解と使い方

プログラムに於いてループ処理と言うのは嫌と言う程使います。
ここでばっちりイメージを掴んで置くと他のForやWhileを扱う時にもイメージが湧くのではないかと思います。

Foreachの条件

Foreachの条件は

  • 配列の数だけ同じ処理をループします
  • 1つ以上の配列を指定する必要があります
  • 処理の途中でBreakがあるとそこでループはストップします。
  • 処理の途中にContinueがあるとその回の処理だけスキップして次の処理に回ります。

先程まで配列の作り方を勉強しましたよね。
普通の変数とは違って1つの変数に複数のデータが格納されていると言う状態です。

foreachの為に何かデータを用意する

$x = [
	'item' => 'りんご',
	'price' => '100',
	'color' => '赤',
];

はいこれで配列が用意出来ましたから、次はいよいよ foreachでデータを取り出してみましょう

foreach ($x as $key => $value) {
	echo $key.' : '.$value.'<br>';
}

はい こんな感じでOKです $x as $key => $value が中身に入ってますけど、$keyと言うのは先程説明したitemとかpriceとかの部分になります。
もちろん Keyもデータとして取り出すことが出来ます。結果はこうなります。

item : りんご
price : 100
color : 赤

配列のデータのイメージはこんな感じに表現出来ます。

配列の中身

配列の中身

foreachは上から順番にitem → price → color と順番に処理した訳です。
foreachの中身は $x as $key => $value でしたから ソースを見ると

echo $key.' : '.$value.'<br>';

だったので、1回の処理は上記ですから key と その中身の value の部分が取り出されたと言う事になります。
上の画像を見て下さいforeachの中では1行ずつ順番に処理されています。

1回目の処理 item とそのデータ りんご
2回目の処理 price とそのデータ 100
3回目の処理 color とそのデータ 赤

上記が処理された後、次のデータが無くなりましたので これでforeachの処理は終了します。
要するに $xが分解されて それぞれ $key と $value に格納されて表示されたと言う事です。

処理を中断させるBreak

Break処理とは、Foreachの途中でBreak命令が入るとループが中断されます。
使いどころとしては、配列の中から目的の数値を探す場合などに良く用いられます。

// 見つけたいURL
$find = 'yahoo.co.jp';
// 適当にサンプル配列を作る
$url_list = ['google.com',yahoo.co.jp','bing.com','hatena.co.jp'];
foreach($url_list as $val){
 if($find == $val){
// 発見できた時点でループ処理をストップさせる
echo '発見しました!';
break;
}
}

このような形でBreakを使います。

上記のサンプルコードでは2番目のループでIF文の中の$findの式が成立しますから2回のループで処理がストップされます。
業界的には『ループを抜ける』と言う表現をします。

処理をスキップさせるContinue

さて続いて処理をスキップさせるContinueです。
使いどころとしては、除外したい項目『配列の中に処理の必要が無いものを見つけた時に処理をスキップさせます』と言うような場合に使われます。

// 除外したい項目
$find = 'りんご';
// 適当にサンプル配列を作る
$url_list = ['みかん',りんご','ぶどう','ばなな','すいか','りんご','いちご'];
foreach($url_list as $val){
 if($find == $val){
// りんごだった場合は処理をスキップ
break;
}
echo $val;
}

上記のサンプルコードを実行すると
みかんぶどうばななすいかいちご
と表示されるはずです。

りんごの文字列が一致した時点でIF文の下のechoが処理されずに次の配列の処理に移行する為です。

ブラックリストを配列化して置きNGリストとして配列を作る事でFindの部分に一致すればスキップと言う場合にも使えます。

連想配列とforeach

さて、ここからはちょっと難しくなるかも知れません
しかし、覚えてしまうと簡単だし、WebAPIなどを触ったりRSS Feedを処理する時には頻繁に使いますので絶対マスターしておきたい所ですからしっかり理解して下さい。

連想配列の作り方

連想配列の作り方は先程の配列の作り方を『中で重ねる』のです。

$x = [
		[
		'item' => 'りんご',
		'price' => '100',
		'color' => '赤',
		],
		[
		'item' => 'バナナ',
		'price' => '300',
		'color' => '黄色',
		],
		[
		'item' => 'いちご',
		'price' => '500',
		'color' => '赤',
		],
		[
		'item' => 'メロン',
		'price' => '1000',
		'color' => '緑',
		],
];

もうなんかちょっとややこしいですよね。

でもね、冷静になって見てもらうと、そうでもないんですよ
図にしてイメージ出来るようにして貰うと良いと思います。

連想配列の図

連想配列の図

どうですか?
あぁ~~なるほど!さっきのセットが4つになったのか!と理解出来たかと思います。
もうちょっと分かった人も居ると思いますが連想配列(多次元配列)とは配列の中に配列が入った状態の事を云います。

このような場合のForeachでの書き出し方を紹介します。
前述の配列の所をきっちりマスター出来て居ればそんなに難しい事でも無いのです。

foreach ($x as $key => $value) {
	echo 'item : '.$value['item'].'<br>';
	echo 'price : '.$value['price'].'<br>';
	echo 'color : '.$value['color'].'<hr>';
}

はい こんな感じで出せます。
1回のループで3つのデータを取り出したいので毎回3行の処理をさせてデータを取り出しました。
配列の時にKeyで出していたデータは今回キメ打ちで出すようにしました。

恐らくこれでPHPを今日始めたばかり!って言う初心者の方でも理解出来たかと思います。
ややこしい場合は常に『図』でイメージするとわかりやすいかと思います。

未経験からIT企業に勤めた私がオススメするプログラミングスクール3社
プログラミングを覚えたいが、どこのプログラミングスクールが良いか探している方向けの記事です。プログラミングスクールは沢山あり過ぎて、どこが自分にとって一番良いスクールか選びかねている人も多いのでは?そこで、『未経験からIT企業で面接担当まで...

コメント