🦔

配列について(1)基礎編

2022/05/02に公開

配列の基礎

配列とは、複数の変数をひとまとまりにした変数です。

// 変数
$a = 'a';
$b = 'b';
$c = 'c';

// 配列の初期化(初期設定)
$array = [$a, $b, $c];
var_dump($array);

上記をvar_dumpした結果は以下になります。

array(3) {
  [0]=> string(1) "a"
  [1]=> string(1) "b"
  [2]=> string(1) "c"
}

配列の読み込み

では、配列にまとめられた、それぞれの変数へはどのようにして読み書きすればよいのでしょうか。

配列のそれぞれの変数には、0から始まるindex番号が振られています。

// 初期化
$array = ['a','b','c'];

// 配列の何番目の変数を出力する
echo $array[0]; // a
echo $array[1]; // b
echo $array[2]; // c

配列へ書き込み

配列のそれぞれの変数には、0から始まるindex番号が振られているので、書き込みたい変数のindex番号を指定して代入(上書き)します。

// 初期化
$array = ['a','b','c'];
// 配列の0番目の変数を上書きする
$array[0] = 'A';
// 配列の0番目の変数を出力する
echo $array[0]; // A

配列に新しい変数を追加する

配列に新しい変数を追加するには、その配列の長さ(追加済みの変数の数)を求めてから、最後の配列にindex番号で書き込みます。

// 初期化
$array = ['a','b','c'];
// 配列にいくつ変数があるか数える
$count = count($array); // 3
// 配列に新しい変数を追加する
$array[$count] = 'd'; // index番号は0から始まるので、新しい番号は"3"でよい

array_push()

昔ながらのやり方は面倒くさいです。
そこでPHPには、配列を追加するための array_push() という便利な関数があります。

// 初期化
$array = ['a','b','c'];
// 配列の末尾に新しい変数を追加する
array_push($array, 'd');
// いくつでも追加できます
array_push($array, 'e', 'f', 'g', 'h', 'i');

var_dump($array)の結果は以下のようになります。

array(9) {
  [0]=>string(1) "a"
  [1]=>string(1) "b"
  [2]=>string(1) "c"
  [3]=>string(1) "d"
  [4]=>string(1) "e"
  [5]=>string(1) "f"
  [6]=>string(1) "g"
  [7]=>string(1) "h"
  [8]=>string(1) "i"
}

配列から変数を削除する

// 初期化
$array = ['a','b','c'];
//  まず削除したい値のindex番号を求めます
$index = array_search('b', $array);
//  index番号を指定してunset()します
unset($array[$index]);

var_dump($array)の結果は以下のようになります。

array(2) {
  [0]=>string(1) "a"
  [2]=>string(1) "c"
}

指定したindex番号は空になりますので注意して下さい!

裏技

実はPHPには、もっと簡単に配列を追加する方法があります。

// 初期化
$array = ['a','b','c'];
// 配列の末尾に新しい変数を追加する
$array[] = 'd';
$array[] = 'e';
// 確認
var_dump($array);

PHPが流行っている理由

PHPには、配列を操作するための便利な関数が揃っています。
暇な時に(電車に乗ってるときや待ち時間など)公式サイトをざっと眺めておくことをお勧めします。[1]

https://www.php.net/manual/ja/ref.array.php

配列の基礎が理解できたら、次は連想配列です!

配列だけだと、そこまで便利さが伝わらないと思いますが、連想配列を学ぶと、プログラムがめちゃくちゃ楽になります!

https://zenn.dev/phpbeginners/articles/b83c65267d03bd

脚注
  1. 受験勉強ではないので、関数名や引数などを暗記しなくてもよいです。分からない時は検索すればよいですし、最近のエディターは候補を表示してくれます。 ↩︎

Discussion