Lesson 6

変数の型①

Lesson 6 Chapter 1
変数の型

Lesson6では変数の型について学習していきます。開発を行う上で型は非常に大きな役割を持っており、知識としても必要不可欠な存在になります。

型とは

変数には値だけでなく型というものも存在します。

型とは、値そのものが持つ性質のことを指し、型によって実行できる処理や求められる結果に大きく変化が生じます。例えば「1」という数字があるとしましょう。見た目は数字の1ですが、整数としての1なのか、ひらがな、漢字、英語などのように文字としての1なのか、開発者が定義付けを行わないとシステムは理解することができません。数字の1であれば足し算など計算した結果が求められるのに対し、文字の1で計算結果を求めるとなると本来であれば不要な考慮が必要になってきます。このように処理の結果が変わってしまうような事態が起きないようLesson6では型についてしっかりと学習を行っていきます。

Lesson6以降で登場するコードと知識

Lesson6で学習していく変数の型とは直接的な関係はありませんが、今後よく登場するコードと知識を事前に紹介します。

①コメントアウト

コメントアウトとはテキストエディタ(VScode)上に残すメモのようなものです。プログラムとして認識はされません。もしメモを残したい箇所などあれば利用していきましょう。//(スラッシュ)を2つ入力することで、その行に記述されている内容はコメントアウトと認識します。

コメントアウト
<?php
// $messageはHelloWorldを代入している。
$message = "HelloWorld";

又、複数行コメントアウトしたい場合は下記のように「/* */」することでコメントアウトと認識させることが可能です。

<?php
/**
* 1行目のコメントアウト
* 2行目のコメントアウト
*/
$message = "HelloWorld";

②リテラル値

PHPの学習では変数が多く登場しますが、実際に稼働しているシステムでは基本的に変数の値は直前まで決まっていないケースも存在します。どのようなフローなのか、会員登録のシーンを例にご紹介します。

①名前や住所など個人情報を入力する。

②入力内容を確認したら「登録ボタン」を押す。

③ここで入力内容がそれぞれの変数の中に代入され、値を管理する。

このようにユーザーが何かアクションを起こし、その結果を変数へ代入します。対して、ここでは既に変数の中の値は予め決めているこのような値をリテラル値と言います。

リテラル値
<?php
// 直接的に代入されている"HelloWorld"がリテラル値
$message = "HelloWorld";

③var_dump()

var_dumpとはPHPが予め用意しているデバッグ関数になります。デバッグとはバグや不都合を確認し修正する作業のことを指します。var_dump関数を使用することで、変数の詳細を確認することができます。

var_dump
<?php
$message = "HelloWorld";
var_dump($message);
出力結果
string(10) "HelloWorld"

stringは値の型を指し、(10)は文字数、ひらがなや漢字などの場合はバイト数(3バイト/1文字)、そして最後に値が確認できます。これらを踏まえた上でLesson6へ取り組んでいきましょう。

④変数のメモリ

普段使用しているPCやスマートフォンにはメモリが存在します。容量が大きければ処理速度が上がり、少なくなれば処理速度が遅くなるあのメモリです。そして基本的に定義されている変数はメモリを確保しており、使用しない場合は変数のメモリを解放してあげることでパフォーマンスの向上に繋がる仕組みです。現段階ではあまり気にする必要はありませんが、認識としては持っておきましょう。意図的にメモリを解放する一例をご紹介致します。

メモリ解放
<?php
$変数 = "値";

// 処理

unset($変数);

PHPが用意してくれているunset関数を使用することで変数の割り当てを解除することが可能なので、メモリも解放することができます。処理が終わった後の変数や使用しない変数はこのようにメモリを解放してあげることでシステムのパフォーマンス向上に繋がることでしょう。

Lesson 6 Chapter 2
文字列型

文字列型とは

型の中でも最も登場する頻度が高い型になります。言葉や単語など文字に該当するものが文字列型です。又、文字列型はstringと表現する事も多々あるので、その認識も今後持っておけると良いでしょう。

string型の特徴

  • 文字を扱う際に使用する。
  • 使用される場面は最も多い。
  • "(ダブルクォーテーション)、又は'(シングルクォーテーション)で囲うことで文字列とすることができる。
  • 文字列の結合ができる。

文字列型の定義

それでは実際にコードを記述していくので新たに、下記の構成でindex.phpを作成しVScodeで開きましょう。

XAMPP > htdocs > Lesson6-2 > index.php

文字列の定義は"(ダブルクォーテーション)、又は'(シングルクォーテーション)で値を囲うことで値の型は文字列と定義することができます。文字列の場合はいずれのクォーテーションでも違いはありませんが、統一性があった方が良いので、どちらか一方を使用するようにしましょう。

index.php
$message = "Hello World";
$message = 'Hello World';

文字列型の確認

それでは先ほど定義した変数が文字列型であるか確認してみましょう。

index.php
$message = "Hello World";
var_dump($message);
出力結果
string(10) "HelloWorld"

stringと表示されているので文字列型であることと同時に$messageの値がHelloWorldということが確認できました。このようにvar_dump関数を使用することで変数の型をチェックすることができます。

文字列型の結合

続いては文字列型を結合してみましょう。前回のLessonで使用した文字列演算子の.(ピリオド)を使用することで結合することが可能です。それでは先ほどのファイルに変更を加えていきます。

XAMPP > htdocs > Lesson6-2 > index.php

index.php
$firstName = "PHP";
$lastName = "太郎";
$name = "私の名前は" . $firstName . $lastName . "です。";

var_dump($name);
出力結果
string(33) "私の名前はPHP太郎です。"

このように文字列が代入されている変数と、変数に代入していない文字列を結合することが可能ということがわかりました。尚、変数にクォーテーションは不要なので、こちらも覚えておきましょう。

文字列型の様々な動作確認

わずかな認識の違いで大きく処理が変わってしまう場合もあるの為、文字列を使って色々な動作確認を行っていきましょう。

①クォーテーションの使い方

上記では変数にクォーテーションは不要とお伝えしましたが、実際に使用してみるとどうなるのか確認してみます。

①-1 "(ダブルクォーテーション)の場合

index.php
$php = "PHPの学習";
var_dump("$php");
出力結果
string(12) "PHPの学習"

ダブルクォーテーションは使用しても使用しなくても結果が変わらず出力されていることが確認できました。結果は変わらないので、基本的に変数に対してダブルクォーテーションは不要となります。

①-2 '(シングルクォーテーション)の場合

index.php
$php = "PHPの学習";
var_dump('$php');
出力結果
string(4) "$php"

変数そのものが表示されました。シングルクォーテーションとダブルクォーテーションではこのように動作が変わります。シングルクォーテーションを使用することで変数を文字として認識させ、出力させています。あえて変数を文字として扱いたいシーンがあればシングルクォーテーションを使用しましょう。

②空白

今後、「名字と名前の間にスペースを空けたい」など、空白を使用したいシーンも出てくると思います。その場合はどのような方法があるのか確認してみましょう。

②-1 とりあえずスペースを打ち込んでみる

index.php
$firstName = "PHP";
$lastName = "太郎";

var_dump($firstName    .    $lastName);
出力結果
string(9) "PHP太郎"

スペースを空けてみましたが、プログラムでは認識されていないようです

②-2 代入する文字列にスペースを打ち込んでみる

index.php
$firstName = "PHP";
$lastName = "  太郎"; // スペース

var_dump($firstName . $lastName);
出力結果
string(10) "PHP  太郎"

スペースを空けた状態で変数へ代入することにより、結果もスペースを空けることができました。しかしこれでは無理矢理なイメージが強くあまり現実的ではありません。

②-3 特殊文字を使用してみる

PHPに限らず、プログラム上で使用できない文字は特殊文字を扱うことで解決することができます。今回はスペースを作ることが可能な特殊文字をいくつか確認してみます。尚、<br>タグはhtmlの改行タグです。今回の処理に関係はありませんが、出力結果を見やすくする為に使用しています。

index.php
$firstName = "PHP";
$lastName = "太郎";

var_dump($firstName . "\t" . $lastName);
echo "<br>";
var_dump($firstName . "\v" . $lastName);
echo "<br>";
var_dump($firstName . "\n" . $lastName);
echo "<br>";
var_dump($firstName . "\r" . $lastName);
出力結果
string(10) "PHP  太郎"
string(10) "PHP  太郎"
string(10) "PHP  太郎"
string(10) "PHP  太郎"

特殊文字を使用することで空白を空けることに成功しました。

②-4 空文字を使用する。

いくつか紹介してきましたが、最もシンプルな方法で実際の現場でも使用頻度が高いものを最後にご紹介します。

index.php
$firstName = "PHP";
$lastName = "太郎";

var_dump($firstName . "  " . $lastName);
出力結果
string(10) "PHP  太郎"

このようにクォーテーションにスペースを空けたもの(空文字)を文字列演算子で結合してあげることで、空白を作ることができます。ぜひ活用してみてください。

③エスケープ処理

エスケープ処理とは、\(バックスラッシュ)や"'(クォーテーション)などの記号や空白、改行など普通に記述しただけでは表現できない文字を使用するための処理になります。例えば掲示板アプリがあるとしましょう。

ユーザーが掲示板に文字を入力し投稿したとします。

掲示板(入力内容)
おはよう
こんにちは
こんばんは

エスケープ処理がされていない場合、以下のような表示になってしまいます。

出力結果
おはようこんにちはこんばんは

これでは掲示板アプリを利用するユーザーにとって見づらく、使いづらいものとなってしまうため開発者はユーザーの入力したスペースや改行をプログラムに認識させてあげる必要があります。それがエスケープ処理となります。

③-1 エスケープ処理がされていない場合

先ほどお伝えしたユーザーにとっても使いづらい点だけでなく、エスケープ処理が施されていない場合はシステムに重大な被害が及ぶ可能性もあります。例えば悪意のあるユーザーが掲示板に何かしらのプログラムを入力し投稿したとしましょう。エスケープ処理がされていない場合、入力された内容が文字ではなくプログラムとして認識されてしまう為、データベースの中でプログラムが実行されてしまいます。このような被害を防ぐ為にもエスケープ処理を施す必要があるので覚えておきましょう。尚、このような被害はXSS(クロスサイトスクリプティング)と呼びます。興味がある方は調べて見てください。

③-2 エスケープ文字の紹介

エスケープ文字はテキストエディタ(VScode)上というより、掲示板やメールなど、システム上に組み込まれた部分での効果を発揮するものです。その為、今回はこの場での確認ではなく、いくつかエスケープ文字を紹介していきます。

エスケープ文字

  • \n ・・・ 改行
  • \r ・・・ カーソルを先頭に戻す(キャリッジリターン)
  • \t ・・・ 水平タブ
  • \' ・・・ '(シングルクォーテーション)
  • \" ・・・ "(ダブルクォーテーション)
  • \¥ ・・・ ¥マーク
  • \$ ・・・ $マーク

皆さんが実際に開発を行うまで、そう遠くはないと思うのでその時は是非活用して見てください。

④文字列のエンコード

ここまで扱ってきた文字一つ一つには文字コードというものが存在します。文字コードとはコンピューター上で扱えるように識別番号のようなものを与えて区別できるようにしたもののことを指します。そして、このPHP教材で書かれている文字にも文字コードが付与されています。

④-1 文字コードによる影響

このような文字化けを一度は目にした方も多いかと思いのではないのでしょうか。

文字化け
���ˤʤäƤ���ʸ����

文字化けが起こる理由としては

  • 文字コードの読み込み
  • 形式の種類
  • ローディング

これらが大きく関係していることがあり、文字列を操作するにあたってこのような文字化けを想定し回避していく必要もあります。

④-2 文字化け対策 エンコード

エンコードとは、文字コードに変換を加えることを言います。PHPでは文字コードをエンコードする関数が予め用意されているので、以下構文をもとに解説していきます。

文字をエンコードする関数
mb_convert_encoding(①, ②, ③)
  • ① ・・・ エンコードしたい文字列
  • ② ・・・ 変換したい文字コード
  • ③ ・・・ 変換前の文字列のエンコード(autoを指定した場合は自動で選択される)

これらを踏まえ、実際にどのように動くのか確認していきましょう。まずは何も変更を加えていないデフォルトの状態を確認しておきましょう。基本的にはこの形式となります。

index.php
<?php
$value = "こんにちは。";
var_dump($value);
出力結果
string(18) "こんにちは。"

続いて別の文字コードを指定し、エンコードして見ます。

index.php
<?php
$value = "こんにちは。";

$encode = mb_convert_encoding($value, "EUC-JP", "auto");

var_dump($encode);
?>
出力結果
string(12) "����ˤ��ϡ�"

文字化けが起きてしまいました。文字化けした文字列を標準の文字コードに変換して見ましょう。

index.php
<?php
$value = "こんにちは。";

$encode = mb_convert_encoding($value, "UTF-8", "auto");

var_dump($encode);
?>
出力結果
string(18) "こんにちは。"

推奨されている文字コード「UTF-8」というものが存在していますので、今後文字化けが起きてしまった場合は文字コードを「UTF-8」であるかどうかを確認し、必要に応じて変更してあげることで解決に繋がります。この文字コードをしっかり覚えておきましょう。

⑤文字列の扱い方

それでは最後に復習も含めて扱い方について学んでいきましょう。まずプログラム上で文字列であることを証明する為には"(ダブルクォーテーション)、または'(シングルクォーテーション)で文字を囲うことがルールになります。(※一部特殊文字を除く)

index.php
<?php
$value = "こんにちは。";
var_dump($value);
出力結果
string(18) "こんにちは。"

⑤-1 クォーテーションで囲わない場合

クォーテーションで囲わない場合の動作も確認して見ましょう。

index.php
<?php
$value = こんにちは。;
var_dump($value);
出力結果
Fatal error: Uncaught Error: Undefined constant "こんにちは。" ...

このようにエラーとなってしまいますので、つけ忘れのないように注意しましょう。

⑤-2 クォーテーションで囲わない場合2

クォーテーションで囲わない場合でも、エラーが出ないケースもあります。

index.php
<?php
$one = 1;

var_dump($one);
出力結果
int(1)

このように対象が数字である場合は、文字列型ではなく整数型と認識してくれます。

(※整数型については次のchapterで学習していきます)

⑤-3 文字列型へのキャスト

キャストとは処理の中で現在の型から別の型へ変換を行うことを指します。先ほど整数型となった$oneを文字列型に変換してみます。

index.php
<?php
$one = 1;

var_dump((string)$one);
出力結果
string(1) "1"

このようにキャストしたい変数の最初に(string)と記述を追加することで、整数型だった1を文字列型の1へ変換することができました。

まとめ

string型のまとめ

  • 文字列型とは値が文字であることを指す。
  • 文字列型はstringと表現する。
  • 文字列を定義する際は"(クォーテーション)で値を囲う必要がある。
  • 文字列型の結合は.(ピリオド)を使用することでつなげる事ができる。
  • 「(string)$変数」とすることで文字列型へキャストする事ができる。

Lesson 6 Chapter 3
整数型

整数型とは

整数型も使用頻度が多く、しっかりと身につけておく必要があります。又、整数型はintと表現することも多々ありますので、こちらも覚えておきましょう。

int型の特徴

  • 小数点のつかない負の数、正の数、0を指す。
  • 計算ができる。

整数型の定義

実際にコードを記述していくので新たに、下記の構成でindex.phpを作成しVScodeで開きましょう。

XAMPP > htdocs > Lesson6-3 > index.php

整数型の定義は文字列型と違い、"(ダブルクォーテーション)、又は'(シングルクォーテーション)で値を囲わないことで値の型は整数と定義することができます。

index.php
<?php
$value = 2;

整数型の確認

それでは先ほど定義した変数が整数型であるか確認してみましょう。

index.php
<?php
$value = 2;
var_dump($value);
出力結果
int(2)

intと表示されているので整数型であることと同時に値が2ということが確認できました。

整数型の計算

続いては整数型を使用して計算を行って見ましょう。前回のLessonで使用した代数演算子を使用することで計算することが可能です。それでは先ほどのファイルに変更を加えていきます。

XAMPP > htdocs > Lesson6-3 > index.php

index.php
$eight = 8;
$two = 2;

// 加算
var_dump($eight + $two);
echo "<br>";

// 減算
var_dump($eight - $two);
echo "<br>";

// 乗算
var_dump($eight * $two);
echo "<br>";

// 除算
var_dump($eight / $two);
echo "<br>";

// 剰余
var_dump($eight % $two);
出力結果
int(10)
int(6)
int(16)
int(4)
int(0)

このように整数型では計算の結果を求めることが可能です。

整数型の様々な動作確認

①クォーテーションを使用

index.php
<?php
$value = "2";
var_dump($value);
出力結果
string(1) "2"

文字列型でも紹介しましたが、このように数字に対してシングル、又はダブルクォーテーションで囲ってしまうと文字列となってしまうため、状況に応じて使い分けが必要になってきます。覚えておきましょう。

計算

先ほどは整数型の状態で計算しましたが、文字列型で計算を行おうとするとどうなるのか、確認して見ます。

index.php
// 加算
var_dump("8 + 2");
echo "<br>";

// 減算
var_dump("8 - 2");
echo "<br>";

// 乗算
var_dump("8 * 2");
echo "<br>";

// 除算
var_dump("8 / 2");
echo "<br>";

// 剰余
var_dump("8 % 2");
出力結果
string(5) "8 + 2"
string(5) "8 - 2"
string(5) "8 * 2"
string(5) "8 / 2"
string(5) "8 % 2"

このように文字列と判定され、計算結果が出るのではなく式が出力されました。とはいえ、文字列で計算ができないということではなく、文字列で計算結果を求めることも可能です。演算子の部分をクォーテーション内に含まなければ、以下のように計算結果を求めることは可能となります。

index.php
// 加算
var_dump("8" + "2");
出力結果
int(10)

整数型へのキャスト

続いて文字列型で定義した変数を整数型に変換して見ましょう。

index.php
$value = "2";
var_dump((int)$value);
出力結果
int(2)

文字列型と同様、(int)を付けたことによりstring型からint型に変換されました。

まとめ

int型のまとめ

  • int型は整数型のことを指す。
  • 整数型であれば容易に計算結果を出力することができる。
  • (int)を変数の前に記述することでint型に変換することができる。

Lesson 6 Chapter 4
論理型

論理型とは

こちらも型の中でも登場する頻度が高い型です。特徴としてはtrue(正)、もしくはfalse(偽)の2択のみ返す型となります。論理型はbool(boolean)と表現する事も多々あるので、その認識も今後持っておけると良いでしょう。

bool型の特徴

  • boolの結果はtrueとfalse2択。
  • 正しい時、成功した時、値が存在する時 ・・・ true(正)。
  • 誤りな時、失敗した時、値が存在しない時 ・・・ false(偽)。
  • trueを1と表し、falseを0や空で表す時もある。
  • 変数の前に(bool)と書くことでその変数の型をbool型に変換できる。

論理型の確認とキャスト

実際にコードを記述していくので新たに、下記の構成でindex.phpを作成しVScodeで開きましょう。

XAMPP > htdocs > Lesson6-4 > index.php

又、これまでの文字列型や整数型と違い、論理型はあえて定義するというよりも結果が論理型かどうかを確認する際に使用されるケースがほとんどです。その為、キャストも同時に行いながら確認していきましょう。

結果がtrueの場合

index.php
$value = "結果はtrueです。";
var_dump((bool)$value)
出力結果
bool(true)

今回の場合、true(正)と判定しているポイントは対象の値が存在するかどうかになります。$valueの中には「結果はtrueです」と何かしらの値が代入されている状態なのでtrueとなりました。

結果がfalseの場合

index.php
$value = "";
var_dump((bool)$value)
出力結果
bool(false)

このように空文字を代入し、値が存在しない状況を判定することによって結果がfalseとなります。

なぜ論理型が存在するのか

これまでは何かしらの値を定義し出力を行ってきたのに対し、論理型は2択の結果のみが返って来るデータ型になります。そして返って来る値はtrueかfalseのいずれかなので、どのような場面で使われるのか気になった方も多いのではないでしょうか。しかし論理型も非常に多くの場面で利用していきます。

使われる場面

  • 処理がうまくいったかどうか判定したい時。
  • 基準を満たしているかどうか判定したい時。
  • 値が存在するかどうか判定したい時。

このように「はい」もしくは「いいえ」の判定で十分な処理の場合に多く使われます。「はい」であればAの処理を実行し「いいえ」であればBの処理を実行する。このようなイメージになります。

まとめ

bool型のまとめ

  • (bool)を変数の前に記述することで論理型に変換することができる。
  • 論理型の返り値はtrue(正)かfalse(偽)の2択。

Lesson 6 Chapter 5
配列型

配列型とは

型の中でも登場する頻度が高い型になります。これまでは一つの変数に対し、単一の値が代入されている状態でしたが、配列型というのは複数の値が代入されている状態のことを指します。又、配列型はarrayと表現する事も多々あるので、その認識も今後持っておけると良いでしょう。

array型の特徴

  • 一つの配列に複数の値を代入する際に使用する。
  • 使用される場面は多い。
  • []を使い配列を成形する。

配列型の定義

それでは実際にコードを記述していくので新たに、下記の構成でindex.phpを作成しVScodeで開きましょう。

XAMPP > htdocs > Lesson6-5 > index.php

配列型の定義は[]で値を囲うことで配列型と定義することができます。そして値は,(カンマ)を使用して1つ目の値、2つ目の値と区別してあげる必要があるので、覚えておきましょう。

index.php
$array = ["りんご", "バナナ", "みかん"];

配列型の確認

それでは先ほど定義した変数が配列型であるか確認してみましょう。

index.php
<?php
$array = ["りんご", "バナナ", "みかん"];
var_dump($array);
出力結果
array(3) { [0]=> string(9) "りんご" [1]=> string(9) "バナナ" [2]=> string(9) "みかん" }

arrayと表示されているので配列型であることと同時に格納されている値が確認できました。少しわかりづらいので並び替えてみるとこのようになります。

array(3) {
[0]=> string(9) "りんご"
[1]=> string(9) "バナナ"
[2]=> string(9) "みかん"
}

まずarray(3)は配列の中にある値の数を表しています。続いて[0][1][2]はインデックス番号というものでキーとも呼ばれています。配列の値に自動的に付与される番号で、0から始まります。string(9)は文字列であることとバイト数(1文字あたり3バイト)を表しており、最後に表示されているものが値になります。

特定の配列の値を呼び出す

配列の中から特定の値のみ出力する方法を学習していきましょう。

先ほど配列にはキーが存在するとお伝えしました。特定の値の取得、出力にはこのキーを元に操作していきます。

index.php
<?php
$array = ["りんご", "バナナ", "みかん"];

var_dump($array[0]);
出力結果
string(9) "りんご"

このように$配列変数[値のキー]と指定してあげることで、特定の値の出力に成功しました。

今回で言うと3つの値が配列に含まれているので0,1,2のキーが存在します。

3以降の存在しないキーを指定するとエラーとなるので、注意しましょう。

エラー
Warning: Undefined array key...

配列型が使用される場面

実際のシステムを開発していく上で配列を扱う場面は多く存在します。一例を紹介すると会員制のサービスやSNSで「マイページ」が存在しますが、マイページの中には名前やメールアドレス、会員番号など自身の情報が表示されています。それらはユーザーという一つの変数の中にユーザーに関する情報が全て含まれており、その配列を展開して各項目に情報を表示させているケースがほとんどです。このような場面で配列型が扱われています。

連想配列

連想配列とは

配列には上記の一般的な配列の他にも連想配列と呼ばれる配列も存在します。先ほどの一般的な配列にはインデックス番号、キーと呼ばれる数字が0番目から付与されるとお伝えしましたが、連想配列とはキーの部分に任意の名前がついたものになります。

連想配列
<?php
$array = [
  "キー" => 値,
  ];

連想配列の定義

index.php
<?php
$array = [
  "apple" => "りんご",
  "banana" => "バナナ",
  "orange" => "みかん"
  ];

var_dump($array);

このように任意の名前を付与させることが可能です。とはいえ、連想配列というくらいなので値が連想できる命名にするよう心がけましょう。

連想配列の結果

結果を確認して見ます。

出力結果
array(3) { ["apple"]=> string(9) "りんご" ["banana"]=> string(9) "バナナ" ["orange"]=> string(9) "みかん" }

少しわかりづらいので並び替えてみるとこのようになります。

出力結果
array(3) {
["apple"]=> string(9) "りんご"
["banana"]=> string(9) "バナナ"
["orange"]=> string(9) "みかん"
}

先ほどの結果と見比べてみると0,1,2のような番号ではなく、命名した名前が振られていることが確認できました。

特定の連想配列の値を呼び出す

連想配列の中から特定の値のみ出力する方法を学習していきましょう。通常の配列と同じように連想配列でもキーを指定してあげることで取得、出力が可能です。

index.php
<?php
$array = [
  "apple" => "りんご",
  "banana" => "バナナ",
  "orange" => "みかん"
  ];

var_dump($array["banana"]);
出力結果
string(9) "バナナ"

配列と違い、番号は存在しないので付与した名前を元に指定してあげましょう。以上が連想配列です。

多次元配列

多次元配列とは

配列には連想配列の他に多次元配列というものも存在します。多次元配列とは配列の中に更に配列がある少し複雑な構成の状態のことを指します。

連想配列
<?php
$array = [
  $array1 = [
    値, 値, 値
    ],
  $array2 = [
    値, 値, 値
    ],
];

連想配列の定義

index.php
<?php
$array = [
  $fruits = [
    "りんご", "バナナ", "みかん"
  ],
  $foods = [
    "お米", "パン", "麺"
  ]
];
var_dump($array);

これで多次元配列の定義は完了です。又、先ほどの連想配列のようにキーに名前を付与することも可能です。その場合は以下のように定義します。

index.php
<?php
$array = [
  $fruits = [
    "apple" => "りんご",
    "banana" => "バナナ",
    "orange" => "みかん"
  ],
  $food = [
    "rice" => "お米",
    "bread" => "パン",
    "noodles" => "麺"
  ]
];
var_dump($array);

多次元配列の結果

それでは最初に定義した多次元配列をもとに結果を確認して見ます。

出力結果
array(2) { [0]=> array(3) { [0]=> string(9) "りんご" [1]=> string(9) "バナナ" [2]=> string(9) "みかん" } [1]=> array(3) { [0]=> string(6) "お米" [1]=> string(6) "パン" [2]=> string(3) "麺" } }

わかりづらいので並び替えて見ましょう。

出力結果
array(2) {
  [0]=> array(3) {
    [0]=> string(9) "りんご"
    [1]=> string(9) "バナナ"
    [2]=> string(9) "みかん"
  }
  [1]=> array(3) {
    [0]=> string(6) "お米"
    [1]=> string(6) "パン"
    [2]=> string(3) "麺"
  }
}

このように配列の中に更に配列ある状態の確認できました。

特定の多次元配列の値を呼び出す

多次元配列の中から特定の値のみ出力する方法を学習していきましょう。こちらも同じようにキーを指定してあげることで取得、出力が可能です。

index.php
<?php
$array = [
  $fruits = [
    "りんご", "バナナ", "みかん"
  ],
  $foods = [
    "お米", "パン", "麺"
  ]
];
var_dump($array);
出力結果
array(2) {
  [0]=> array(3) {
    [0]=> string(9) "りんご"
    [1]=> string(9) "バナナ"
    [2]=> string(9) "みかん"
  }
  [1]=> array(3) {
    [0]=> string(6) "お米"
    [1]=> string(6) "パン"
    [2]=> string(3) "麺"
  }
}

少し複雑になるので、出力結果を確認しながら「パン」を取得してみます。まずは複数ある配列から該当の値がある配列を選択します。「パン」は[1]の配列の中にあるので[1]を選択します。続いて[1]の配列の中で「パン」のキーは[1]に該当するので、以下のように指定して見ましょう。

index.php
<?php
$array = [
  $fruits = [
    "りんご", "バナナ", "みかん"
  ],
  $foods = [
    "お米", "パン", "麺"
  ]
];
var_dump($array[1][1]);
出力結果
string(6) "パン"

取得する値までの階層が深い分、少し複雑ではありますが、方法は配列や連想配列と大きな違いはありません。以上が多次元配列でした。

まとめ

array型のまとめ

  • 配列とは複数の値を保持している状態、又保持できる状態のことを指す。
  • 配列型とは配列であることを指す。
  • キーに名前がついたものを連想配列と呼ぶ。
  • 配列の中に配列が存在することを多次元配列と呼ぶ。