
「PHP」の「配列・連想配列」と「スーパーグローバル」変数を勉強しよう!!
PHPでの「配列」「連想配列」の機能や「多次元配列」について勉強していきたいと思います。
「まとめてデータを扱うことができる」機能ですが、「データ型」について柔軟性のあるPHPで配列を利用する方法とWEBアプリケーションでよく利用される「2次元配列」についても使い方を身に付けたいと思います。
他にも配列を便利に利用できる「関数」の使い方を見ていきましょう。
「配列」の作り方
配列を作るためには、
配列変数名 = array(値1, 値2・・・);
のように書いていくことで、配列を作ることができます。
配列を利用したプログラムを、
<?php
$ramens = array('味噌','醬油','とんこつ','塩','鶏ガラ');
?>
<!DOCTYPE html>
<head>
<meta charset="utf-8">
</head>
<body>
<h1>ラーメンメニュー</h1>
<ul>
<?php foreach( $ramens as $ramen ){ ?>
<li><?php print $ramen; ?>ラーメン</li>
<?php } ?>
</ul>
</body>
</html>
のように作ってみました。
このプログラムを実行すると、

のように表示されます。
「連想配列」の作り方
「連想配列」は、「キー」と「値」をセットで格納できる機能です。
プログラムを書く際には、
連想配列変数名 = array(
'キー名1 => '値1',
'キー名2 => '値2'
・
・
);
のように書いていきます。
「連想配列」を利用したプログラムは、
<?php
$favorite = array(
'一番好きなドリンクの種類' => 'フルーツ系炭酸飲料',
'一番好きなお菓子の種類' => 'スナック菓子',
'趣味' => 'ゲーム'
);
?>
<!DOCTYPE html>
<head>
<meta charset="utf-8">
</head>
<body>
<h1>好きなもの一覧</h1>
<ul>
<?php foreach( $favorite as $type => $content ){ ?>
<li>「<?php print $type; ?>」は、「<?php print $content; ?>」です。</li>
<?php } ?>
</ul>
</body>
</html>
のように作ってみました。
ブラウザの実行結果を見てみると、

のようになります。
「好きなものの種類」と「好きなもの」をセットで管理できるのは便利ですね。
「種類の違うもの」を管理するためにはかなり良さそうです。
実際の使い方をエンジニアさんに聞いてみたいのですが、「値の受け取りとかかな~よく使うけどね。」と教えてもらいました。
前に出てきたあれですね。
「$_GET」とかで受け取るやつ。
でも、「値の受け取り」の仕組みはまだわかっていません。
ここで、そろそろちゃんと勉強していきたいと思います。
多次元配列
「多次元配列」は、「配列の中に配列を入れることができる仕組み」なのですが、
array(
array(要素1, 要素2・・・)
);
のように書くことで、配列の中にどんどん配列を入れていくことができます。
ただ、あまり深い配列は使わないとのことで、「2次元配列」について学んでいきたいと思います。
そして、「サンプルプログラム」を作ってみました。
<?php
$seiseki = array(
array(
'生徒id' => 1,
'国語' => 82,
'数学' => 91,
'英語' => 80
),
array(
'生徒id' => 2,
'国語' => 73,
'数学' => 81,
'英語' => 95
),
array(
'生徒id' => 3,
'国語' => 85,
'数学' => 71,
'英語' => 81
)
);
?>
<!DOCTYPE html>
<head>
<meta charset="utf-8">
</head>
<body>
<h1>生徒の成績一覧</h1>
<?php foreach( $seiseki as $student ){ ?>
<ul>
<?php foreach( $student as $type => $content ){ ?>
<li>「<?php print $type; ?>」は、「<?php print $content; ?>」です。</li>
<?php } ?>
</ul>
<?php } ?>
</body>
</html>
このプログラムを実行すると、

のように表示され、「配列の要素」がすべて出力されています。
「foreach」文を2回ループさせないといけないので、配列の多次元化が進むと、出力処理も複雑になっていきそうですね。
スーパーグローバル変数
「なんて名前を付けるんだ」と思ったのが素直な印象。
「スーパー」でなおかつ「グローバル」な変数だなんて、さぞかしスゴイ機能を持っている変数なんだろうなと、名前から勝手に推測してしまいます。
この変数は、PHPが勝手に作ってくれて、なおかつ「どこからでも使える変数」とのことで、いろんな情報が詰まっているので、「情報の宝庫」的な変数のようです。
「スーパーグローバル変数」の詳しい中身は、
に書いてありました。
1つ1つの中身を見ていたら、よくわからなくなってきたので、エンジニアさんに聞いてきました。
「$_GET」というのは、「GET」という方法で送られたデータを受け取ることができて、もう一つ「$_POST」というものがあり「POST」という方法で送られたデータを受け取る際に利用するそうです。
そもそも「GET」と「POST」の意味がよくわからないので、結局「へぇ~」という感じで話があまりできませんでした。
自分で調べてみると、そもそも、インターネットの通信規約の「HTTP」という方法が関連しているみたいです。
URLに書いているあれだ。くらいしかわからないので、「GET」「POST」を使うことで、サーバーにデータを送ることができるらしい。
この2つの違いを調べてみると、
「GET」はURLの最後に「送信データ」を追加してから、サーバーにデータを送るらしく、「POST」はURLには「送信データ」は追加されない、という違いがあるそう。
安全性を考慮して「POST」を利用する方がいいみたい。
そこはなんとなくわかるな~「送ったデータが見えてしまう」っていうところが良くない。
まだまだいろんな「スーパーグローバル変数」があるので、少しずつ調べながら使っていきたいと思います。
→(前へ)「PHP」の「条件分岐」と「繰り返し」の書き方を学ぶ