PHPの配列の仕組みと使い方のサンプルです。
確認環境 ・PHP 7 |
目次
仕組み | 配列とは |
作成する | 配列を作成する |
取得する | 指定の値があるか真偽値を返す(in_array) |
指定の値のキー(位置)を返す(array_search) | |
追加する | 配列の先頭に値を追加する(array_unshift) |
任意の位置に値を追加する(array_splice) | |
更新する | 配列の値を更新する |
配列の値を削除する(unset) | |
ソート | 配列の値をソートする |
配列の種類 | 連想配列を作成する |
多次元配列を作成する |
配列とは
$a = [ 値1 , 値2 , 値3 ]; |
上記は複数の値を変数aに代入しています。
この変数aは配列として複数の値を持ちます。
配列の図
- 1つの変数で複数の値を保持できます。
- 各項目を要素(element)といいます。
- 配列のそれぞれの値は添字(インデックス番号)でアクセスできます。上記図では[0]、[1]、[2]、[3]が添字です。
- 添字は0から始まります。
- 以下は、PHPマニュアルの配列のリンクです。
http://php.net/manual/ja/language.types.array.php
配列を作成する
<?php
$a = [];
$a[0] = "赤";
$a[1] = "黄";
$a[] = "青";
echo $a[0]; // 赤
echo $a[1]; // 黄
echo $a[2]; // 青
?>
2行目は、空の配列を作成しています。
※PHP 5.4からarrayを使用せずに配列を作成できるようになりました。
5行目のようにインデックスを指定しない場合は末尾に追加されます。
配列の値をfor文で取得する
<?php
$color = ['赤','黄','青'];
foreach($color as $a){
echo $a; //赤 黄 青
}
for($i = 0 ,$size = count($color); $i < $size; ++$i) {
echo $color[$i]; //赤 黄 青
}
?>
4~6行目は、foreach文で配列の各値を表示しています。
8~10行目は、for文で配列の各値を表示しています。
8行目のfor文は、1つ目の引数の箇所(初期化式)で配列のサイズ($size = count($color))を取得しています。2つ目の引数の箇所(条件式)でcountを使用すると都度countを実行してしまい遅くなるためです。
指定の値があるか真偽値を返す(in_array)
<?php
$c1 = ["赤","黄","青"];
$a = in_array("赤",$c1,true);
var_dump($a); // bool(true)
$b = in_array("白",$c1,true);
var_dump($b); // bool(false)
?>
in_arrayは、ひとつめの引数の値が配列に存在する場合はtrue、存在しない場合はfalseを返します。
3つめの引数のtrueは型比較(===)を行う指定です。
指定の値のキー(位置)を返す(array_search)
<?php
$c1 = ["赤","黄","青"];
print(array_search("赤",$c1)); //0
print(array_search("黄",$c1)); //1
print(array_search("青",$c1)); //2
var_export(array_search("白",$c1)); //false
?>
4~6行目は、array_searchで指定した値のキー(位置)を返します。最初は0から始まります。
7行目は、指定した値が存在しないのでfalseが返ります。
配列の先頭に値を追加する(array_unshift)
<?php
$color = ["赤","黄","青"];
array_unshift($color,"白");
print_r($color);//Array ( [0] => 白 [1] => 赤 [2] => 黄 [3] => 青 )
?>
4行目は、array_unshiftで配列の先頭に値を追加しています。
任意の位置に値を追加(array_splice)
<?php
$c1 = ["赤","黄","青"];
array_splice($c1,1,0,"白");
print_r($c1);//Array ( [0] => 赤 [1] => 白 [2] => 黄 [3] => 青 )
$c2 = ["赤","黄","青"];
array_splice($c2,1,1,"白");
print_r($c2);//Array ( [0] => 赤 [1] => 白 [2] => 青 )
?>
array_spliceの2つめの引数は位置です。位置は0から始まります。
値を追加する場合は、3つめの引数は0にします。
0以外の場合は、その分文字が置き換わります。
4行目は、array_spliceで配列の任意の位置に値を追加しています。
9行目は、array_spliceで配列の値を置き換えています。
配列の値を更新する
<?php
$color = ["赤","黄","青"];
$color[1] = "オレンジ";
print_r($color);//Array ( [0] => 赤 [1] => オレンジ [2] => 青 )
?>
4行目は、添字を指定して配列の値を更新しています。
配列の値を削除する(unset)
<?php
$color = ["赤","黄","青"];
unset($color[1]);
print_r($color);//Array ( [0] => 赤 [2] => 青 )
?>
4行目は、unset関数で配列の要素を削除しています。添字は自動でつまりません。「0→2」となり1がありません。
配列の値をソートする
<?php
$ar1 = [100,2,99];
sort($ar1);
print_r($ar1); //Array ( [0] => 2 [1] => 99 [2] => 100 )
$ar2 = ["da","abb","pccc"];
sort($ar2);
print_r($ar2); //Array ( [0] => abb [1] => da [2] => pccc )
?>
2行目は、数値の配列です。
4行目でソートをしています。
5行目は、2,99,100になります。100,2,99にはなりません。
7行目は、文字列の配列です。
9行目でソートをしています。
10行目は、先頭の文字のabc順に表示されます。
連想配列を作成する
<?php
$ar1 = ['c1'=>'赤',
'c2'=>'黄',
'c3'=>'青'
];
//$ar1 = array('c1'=>'赤', 'c2'=>'黄', 'c3'=>'青');
print_r($ar1); //Array ( [c1] => 赤 [c2] => 黄 [c3] => 青 )
print $ar1['c1']; // 赤
print $ar1['c2']; // 黄
print $ar1['c3']; // 青
?>
2~5行目は、キーと値を指定して連想配列を作成しています。
6行目は、arrayで連想配列を作成します。
※PHP 5.4からarrayを使用せずに配列を作成できるようになりました。
http://php.net/manual/ja/migration54.new-features.php
9~11行目は、キーを指定してそれぞれの値を表示しています。
多次元配列を作成する
<?php
$ar1 = [
"色の種類2",
["赤2","黄2","青2"],
["緑2","白2","黒2"]
];
print_r($ar1);
//Array ( [0] => 色の種類2
// [1] => Array ( [0] => 赤2 [1] => 黄2 [2] => 青2 )
// [2] => Array ( [0] => 緑2 [1] => 白2 [2] => 黒2 ) )
print $ar1[0]; // 色の種類2
print $ar1[1][0]; // 赤2
print $ar1[1][1]; // 黄2
print $ar1[1][2]; // 青2
print $ar1[2][0]; // 緑2
print $ar1[2][1]; // 白2
print $ar1[2][2]; // 黒2
?>
2~6行目は、ブラケット[ ]を使用して多次元配列を作成しています。
8行目は、print_r()で変数の情報を表示しています。
関連の記事
PHP foreach文のサンプル(break/continue)
PHP 変数から連想配列を作成するサンプル(compact)
PHP 連想配列から変数を作成するサンプル(extract)