PHP 配列の仕組みと使い方のサンプル

PHPの配列の仕組みと使い方のサンプルです。(確認環境:PHP7)

仕組み 配列とは
作成 配列を作成
取得 要素を取得(for文、foreach文) / 要素を検索(in_arrayとarray_searchの違い)
  配列と文字列の変換(implodeとexplodeの違い)
配列の並びをランダムにする(shuffle)
更新 先頭に追加(array_unshift) / 任意の位置に追加・置き換え(array_splice)
  値を更新(添字) / 値を削除(unset)
ソート 配列の値をソート(sort)

配列とは

$a = [ 値1 , 値2 , 値3 ];

上記は複数の値を変数aに代入しています。
この変数aは配列として複数の値を持ちます。

配列の図

  • 1つの変数で複数の値を保持できます。
  • 各項目を要素(element)といいます。
  • 配列のそれぞれの値は添字(インデックス番号)でアクセスできます。上記図では[0]、[1]、[2]、[3]が添字です。
  • 添字は0から始まります。
  • 以下は、PHPマニュアルの配列のリンクです。
    http://php.net/manual/ja/language.types.array.php

配列を作成

<?php
$arr1 = [];
$arr1[0] = "赤";
$arr1[1] = "黄";
$arr1[] = "青";

echo $arr1[0]; // 赤
echo $arr1[1]; // 黄
echo $arr1[2]; // 青

2行目は、空の配列を作成しています。
※PHP 5.4からarrayを使用せずに配列を作成できるようになりました。
5行目のようにインデックスを指定しない場合は末尾に追加されます。

要素を取得(for文、foreach文)

<?php
$arr1 = ['赤', '黄', '青'];
// for文
for ($i = 0, $size = count($arr1); $i < $size; ++$i) {
  echo $arr1[$i]; //赤 黄 青
}
// foreach文
foreach ($arr1 as $a) {
  echo $a; //赤 黄 青
}

4行目のfor文は、1つ目の引数の箇所(初期化式)で配列のサイズ($size = count($color))を取得しています。2つ目の引数の箇所(条件式)でcountを使用すると都度countを実行してしまい遅くなるためです。

要素を検索(in_arrayとarray_searchの違い)

in_arrayは、指定の値が存在する場合はtrueを、存在しない場合はfalseを返します。
array_searchは、指定の値が存在する場合は位置(数値)を、存在しない場合はfalseを返します。

<?php
$arr1 = ["赤", "黄", "青"];

$b1 = in_array("赤", $arr1, true);
var_dump($b1); // bool(true) 
$b2 = in_array("白", $arr1, true);
var_dump($b2); // bool(false)

print(array_search("赤", $arr1)); //0
print(array_search("黄", $arr1)); //1
print(array_search("青", $arr1)); //2
var_export(array_search("白", $arr1)); //false

in_arrayの3つめの引数のtrueは型比較(===)を行う指定です。

配列と文字列の変換(implodeとexplodeの違い)

implodeは、配列を文字列にします。1つ目の引数の文字で連結します。
explodeは、文字列を配列にします。1つ目の引数の文字で区切ります。

<?php
$arr1 = ["赤", "黄", "青"];

$str1 = implode('-', $arr1);
 
echo $str1; // 赤-黄-青

$arr2 = explode('-', $str1);

print_r($arr2); // Array ( [0] => 赤 [1] => 黄 [2] => 青 )

 

配列の並びをランダムにする(shuffle)

shuffleは、配列の並びをランダムします。

<?php
$arr1 = ["赤", "黄", "青"];

shuffle($arr1);

echo $arr1[0]; // 黄
echo $arr1[1]; // 赤
echo $arr1[2]; // 青

 

先頭に追加(array_unshift)

array_unshiftは配列の先頭に値を追加します。

<?php
$arr1 = ["赤", "黄", "青"];

array_unshift($arr1, "白");
print_r($arr1);//Array ( [0] => 白 [1] => 赤 [2] => 黄 [3] => 青 )

 

任意の位置に追加・置き換え(array_splice)

array_spliceは任意の位置に値を追加または置き換えます。

<?php
$arr1 = ["赤", "黄", "青"];

array_splice($arr1, 1, 0, "白");
print_r($arr1); //Array ( [0] => 赤 [1] => 白 [2] => 黄 [3] => 青 )

$arr2 = ["赤", "黄", "青"];

array_splice($arr2, 1, 1, "白");
print_r($arr2);//Array ( [0] => 赤 [1] => 白 [2] => 青 )

array_spliceの2つめの引数は追加する位置です。位置は0から始まります。
値を追加する場合は、3つめの引数は0にします。
0以外の場合は、その分文字が置き換わります。

値を更新(添字)

<?php
$arr1 = ["赤", "黄", "青"];

$arr1[1] = "オレンジ";
print_r($arr1);//Array ( [0] => 赤 [1] => オレンジ [2] => 青 )

添字を指定して配列の値を更新します。

値を削除(unset)

unsetは、配列の要素を削除します。添字は自動で前詰めになりません。
「0,1,2」の1を削除した場合は、「0,2」となります。

<?php
$arr1 = ["赤", "黄", "青"];

unset($arr1[1]);
print_r($arr1);//Array ( [0] => 赤 [2] => 青 )

 

配列の値をソート(sort)

<?php
$arr1 = [100, 2, 99];

sort($arr1);
print_r($arr1); //Array ( [0] => 2 [1] => 99 [2] => 100 )

$arr2 = ["da", "abb", "pccc"];

sort($arr2);
print_r($arr2); //Array ( [0] => abb [1] => da [2] => pccc )

5行目は、2,99,100になります。100,2,99にはなりません。
7行目は、文字列の配列です。
10行目は、先頭の文字のabc順に表示されます。

関連の記事

PHP foreach文のサンプル(break/continue)
PHP 変数から連想配列を作成するサンプル(compact)
PHP 連想配列から変数を作成するサンプル(extract)

△上に戻る