こんにちはフロントエンドエンジニアのまさにょんです!
今回は、PHPの配列の操作(作成・更新・削除)について解説していきます。
目次
- 1 PHPの配列の操作(作成・更新・削除)
- 2 Twitterやってます!Follow Me!
- 3 プログラミング学習・エンジニア転職関連の情報
- 4 PHP / Laravel書籍
- 5 参考・引用
- 6 最近の投稿
PHPの配列の操作(作成・更新・削除)
PHPの配列について、配列の作成, 取得, 新規追加, 更新, 削除などの処理(CRUD処理)の方法・使い方をそれぞれ見ていきます。
PHP の配列の作り方は2つある
PHP の配列の作り方にはarray()
と []
の 2通りあります。
<?php
// PHP の 配列の作り方 => array() と [] の 2通りある!
// 1. [] で配列を作成するパターン
$array = ['ロボ玉試作1号機', 'ロボ玉試作2号機', 'ロボ玉試作3号機'];
// 2. array() で配列を作成するパターン
$array2 = array('ロボ玉試作1号機', 'ロボ玉試作2号機', 'ロボ玉試作3号機');
配列からデータを取得(Read)する: Array[key]
配列からデータを取得する際は、Array[key]
の形でデータを取得できます。
key は index または key名で、通常の配列は indexで、連想配列の場合は key名です。
<?php
$array = ['ロボ玉試作1号機', 'ロボ玉試作2号機', 'ロボ玉試作3号機'];
// 1. 配列からデータを取得する => Array[key]
// 2. key は index or key名
echo $array[0]."\n";
// ロボ玉試作1号機
echo '型: ' . gettype($array)."\n";
// 型: array
配列に値を新規追加(Create)する: array_push または Array[] = Setする値
配列に値を新規追加するには、いくつか方法がありますが、
よく使用するのはarray_push()
または Array[] = Setする値
になります。
<?php
$array = ['ロボ玉試作1号機', 'ロボ玉試作2号機', 'ロボ玉試作3号機'];
$array2 = array('ロボ玉試作1号機', 'ロボ玉試作2号機', 'ロボ玉試作3号機');
// 配列の末尾に値を追加する Ver. array_push
array_push($array, 'Gunmar-Robotama');
// 配列の末尾に値を追加する Ver. Array[]
$array2[] = 'Neo-Robotama';
配列の値を更新(Update)する: Array[key] = Setする値
配列の値を更新(Update)する際は、Array[key名] = Setする値
の形で更新します。
<?php
$array2 = array('ロボ玉試作1号機', 'ロボ玉試作2号機', 'ロボ玉試作3号機');
// 配列の値を更新(Update)する
$array2[0] = 'ロボ玉0号機 (ProtoTypeZero)';
ここまでの操作のまとめ
<?php
// PHP の 配列の作り方 => array() と [] の 2通りある!
// 1. [] で配列を作成するパターン
$array = ['ロボ玉試作1号機', 'ロボ玉試作2号機', 'ロボ玉試作3号機'];
// 2. array() で配列を作成するパターン
$array2 = array('ロボ玉試作1号機', 'ロボ玉試作2号機', 'ロボ玉試作3号機');
// 配列からデータを取得する => Array[key]
// key は index => indexを指定して値を取り出す。
echo $array[0]."\n";
// ロボ玉試作1号機
echo '型: ' . gettype($array)."\n";
// 型: array
// 配列の末尾に値を追加する Ver. array_push
array_push($array, 'Gunmar-Robotama');
// 配列の末尾に値を追加する Ver. Array[]
$array2[] = 'Neo-Robotama';
// 配列の値を更新(Update)する
$array2[0] = 'ロボ玉0号機 (ProtoTypeZero)';
var_export($array);
echo "\n";
// [ 出力結果 ]
// array (
// 0 => 'ロボ玉試作1号機',
// 1 => 'ロボ玉試作2号機',
// 2 => 'ロボ玉試作3号機',
// 3 => 'Gunmar-Robotama',
// )
var_export($array2);
echo "\n";
// [ 出力結果 ]
// array (
// 0 => 'ロボ玉0号機 (ProtoTypeZero)',
// 1 => 'ロボ玉試作2号機',
// 2 => 'ロボ玉試作3号機',
// 3 => 'Neo-Robotama',
// )
配列から特定の要素を削除(Delete)する: Indexを指定して削除する
配列から特定の要素を削除する方法には、indexを指定して削除する方法や、要素そのものを指定して削除する方法があります。
それぞれ解説していきます。
まずは、array_splice関数を使って、index指定削除をするについてです。
array_splice関数は、配列のindexで指定した要素を削除し、他の要素で置換する関数です。
詳細は、PHP-Manualから引用します。
array_splice — 配列の一部を削除し、他の要素で置換する
[ 説明 ]
array_splice(
array&$array
,
int$offset
,
?int$length
=null
,
mixed$replacement
= []
): array配列
array
からoffset
およびlength
で指定された要素を削除し、配列
replacement
でそれを置換します。[ パラメーター ]
- array: 入力の配列 => 削除対象配列
- offset: どこから切り取るか? => 切り取り開始Index
- length: 切り取る長さ => 切り取り数
- replacement: 削除対象と置換する(入れ替える)データの配列
[ 戻り値 ]
抽出された要素を含む配列を返します。
引用元: array_splice
今回の場合は、array_splice関数は、
切り取られた値(返り値・実行結果) = array_splice(削除対象配列, 切り取り開始Index, 切り取り数);
のような形で使っていきます。
<?php
// 1. array_splice関数を使って、index指定削除をする
$target = ['ロボ玉試作1号機', 'ロボ玉試作2号機', 'ロボ玉試作3号機'];
// 削除実行
$split = array_splice($target, 1, 1);
// 切り取られた値(返り値・実行結果) = array_splice(削除対象配列, 切り取り開始Index, 切り取り数);
// 削除結果
var_export($target);
echo "\n";
// [ 出力結果 ]
// array (
// 0 => 'ロボ玉試作1号機',
// 1 => 'ロボ玉試作3号機',
// )
// 実行結果・返り値 => 切り取った値
var_export($split);
echo "\n";
// [ 出力結果 ]
// array (
// 0 => 'ロボ玉試作2号機',
// )
indexを指定して削除する方法として、unset関数を使って、index指定削除をするというものがあります。
ただ、unset関数を使用する場合は、array_values関数でIndexを詰める必要があります。
2つの関数の詳細は、PHP-Manualから引用します。
unset
unset — 指定した変数の割当を解除する
[ 説明 ]unset(mixed
$var
, mixed...$vars
): voidunset() は指定した変数を破棄します。
関数 unset() の内部動作は、 破棄しようとする変数の型に依存します。
あるグローバル変数が関数の中で unset() された場合、ローカル変数のみが破棄されます。
呼出側の環境にある変数は、 unset() がコールされる前と同じ値を保持します。
引用元: unset
array_values
array_values — 配列のすべての値を返す
[ 説明 ]
array_values(array
$array
): arrayarray_values() は、配列
array
から全ての値を取り出し、数値添字をつけた配列を返します。[ パラメーター ]
- array: 配列
[ 戻り値 ]
数値添字の値の配列を返します。
引用元 array_values
<?php
// 1. unset関数を使って、index指定削除をする
$target2 = ['ロボ玉試作1号機', 'ロボ玉試作2号機', 'ロボ玉試作3号機'];
// 削除実行
unset($target2[1]);
// 実行結果
//indexの1を削除したため、indexが連番でなくなっている!
var_export($target2);
echo "\n";
// [ 出力結果 ]
// array (
// 0 => 'ロボ玉試作1号機',
// 2 => 'ロボ玉試作3号機',
// )
// indexを詰める
$target2 = array_values($target2);
// indexの欠番が詰められて連番になった
var_export($target2);
echo "\n";
// [ 出力結果 ]
// array (
// 0 => 'ロボ玉試作1号機',
// 1 => 'ロボ玉試作3号機',
// )
配列から特定の要素を削除する: 要素(value)を直接指定して削除する
要素(value)を直接指定して削除する方法もあります。
この方法では、array_diff()
でindex値ではなく、要素そのものを指定して値の削除を行った後に、
array_values()
indexを詰める作業をします。
ちなみにarray_diff()
は第1引数の配列と第2引数以降の配列と比較し、
第1引数の要素の中で他の配列には存在しないものだけを返す関数です。
array_diff
array_diff — 配列の差を計算する
[ 説明 ]
array_diff(array
$array
, array...$arrays
): array
array
を他の配列と比較し、array
の要素の中で他の配列には存在しないものだけを返します。[ パラメーター ]
- array: 比較元の配列
- arrays: 比較対象の配列
[ 戻り値 ]
array
のエントリのうち、他のどの配列にも含まれない要素のみを含む配列を返します。引用元: array_diff
array
の配列のキーは維持されます。
<?php
// 1. 要素(value)を直接指定して削除する
$target3 = ['Robotama','ロボ玉試作1号機', 'ロボ玉試作2号機', 'ロボ玉試作3号機', 'Robo-Ball'];
// 2. array_diff() で削除実行
$result = array_diff($target3, ['Robotama', 'ロボ玉試作2号機']);
// 3. array_values() でindexを詰める
$result = array_values($result);
// 削除結果を出力
var_export($result);
echo "\n";
array (
0 => 'ロボ玉試作1号機',
1 => 'ロボ玉試作3号機',
2 => 'Robo-Ball',
)
多次元配列
多次元配列は、配列の中にさらに配列が格納されているようなデータ構造です。
<?php
// 1. 多次元配列
$multi_array = [
['ロボ玉試作1号機', 01],
['ロボ玉試作2号機', 02],
['ロボ玉試作3号機', 03],
];
var_export($multi_array);
echo "\n";
// [ 出力結果 ]
// array (
// 0 =>
// array (
// 0 => 'ロボ玉試作1号機',
// 1 => 1,
// ),
// 1 =>
// array (
// 0 => 'ロボ玉試作2号機',
// 1 => 2,
// ),
// 2 =>
// array (
// 0 => 'ロボ玉試作3号機',
// 1 => 3,
// ),
// )
echo '型: ' . gettype($multi_array)."\n";
// 型: array
echo "foreachでループして中の値を取り出す" ."\n";
foreach ($multi_array as $index => $array) {
foreach($array as $index2 => $val) {
echo "{$index}-{$index2}: {$val}" . "\n";
}
}
// [ 出力結果 ]
// 0-0: ロボ玉試作1号機
// 0-1: 1
// 1-0: ロボ玉試作2号機
// 1-1: 2
// 2-0: ロボ玉試作3号機
// 2-1: 3
連想配列
PHPの連想配列では、[ key1 => value1, key2 => value2 ]
のような形で key名とそれに対応するvalueを設定できます。
連想配列のCRUD処理も順に掲載しておきます。
<?php
// 1. 連想配列を作成する・定義する
$associative_array = [
"Robotama-1" => "Tokyo",
"Robotama-2" => "Saitama",
"Robotama-3" => "Gunmar",
];
// 2. 連想配列にデータを新規追加する: Create
$associative_array['Robotama-4'] = 'Kanagawa';
// 3. key名を指定して、値を取り出す: Read
echo $associative_array["Robotama-1"] . "\n";
// Tokyo
// 4. 連想配列のデータを更新する: Update
$associative_array['Robotama-2'] = '飛んで埼玉';
// 5. 連想配列の値を削除する: Delete
unset($associative_array['Robotama-1']);
var_export($associative_array);
echo "\n";
// [ 出力結果 ]
// array (
// 'Robotama-2' => '飛んで埼玉',
// 'Robotama-3' => 'Gunmar',
// 'Robotama-4' => 'Kanagawa',
// )
echo '型: ' . gettype($associative_array)."\n";
// 型: array
echo "foreachでループして中の値を取り出す" ."\n";
foreach ($associative_array as $key => $val) {
echo "{$key} の値は、{$val}" . "\n";
}
// [ 出力結果 ]
// Robotama-2 の値は、飛んで埼玉
// Robotama-3 の値は、Gunmar
// Robotama-4 の値は、Kanagawa
Twitterやってます!Follow Me!
神聖グンマー帝国の逆襲🔥
神聖グンマー帝国の科学は、世界一ぃぃぃぃぃぃ!!!!!