【PHP】配列の操作まとめ(作成・更新・削除)

PHP-Array

こんにちはフロントエンドエンジニアのまさにょんです!

今回は、PHPの配列の操作(作成・更新・削除)について解説していきます。

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指定削除をするについてです。

array_splice関数は、配列のindexで指定した要素を削除し、他の要素で置換する関数です。

詳細は、PHP-Manualから引用します。

array_splice

array_splice — 配列の一部を削除し、他の要素で置換する

[ 説明 ]

array_splice(
    array &$array,
    int $offset,
    ?int $length = null,
mixed$replacement = []
): array

配列 array から offset および length で指定された要素を削除し、

配列 replacement でそれを置換します。

[ パラメーター ]

  1. array: 入力の配列 => 削除対象配列
  2. offset: どこから切り取るか? => 切り取り開始Index
  3. length: 切り取る長さ => 切り取り数
  4. 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号機',
//   )

unset関数を使って、index指定削除をする

indexを指定して削除する方法として、unset関数を使って、index指定削除をするというものがあります。

ただ、unset関数を使用する場合は、array_values関数でIndexを詰める必要があります。

2つの関数の詳細は、PHP-Manualから引用します。

unset

unset — 指定した変数の割当を解除する

[ 説明 ]

unset(mixed $varmixed ...$vars): void

unset() は指定した変数を破棄します。

関数 unset() の内部動作は、 破棄しようとする変数の型に依存します。

あるグローバル変数が関数の中で unset() された場合、ローカル変数のみが破棄されます。

呼出側の環境にある変数は、 unset() がコールされる前と同じ値を保持します。

引用元: unset

array_values

array_values — 配列のすべての値を返す

[ 説明 ]

array_values(array $array): array

array_values() は、配列 array から全ての値を取り出し、数値添字をつけた配列を返します。

[ パラメーター ]

  1. 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 の要素の中で他の配列には存在しないものだけを返します。

[ パラメーター ]

  1. array: 比較元の配列
  2. arrays: 比較対象の配列

[ 戻り値 ]

array のエントリのうち、他のどの配列にも含まれない要素のみを含む配列を返します。 

array の配列のキーは維持されます。

引用元: array_diff
<?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!

神聖グンマー帝国の逆襲🔥

神聖グンマー帝国の科学は、世界一ぃぃぃぃぃぃ!!!!!

プログラミング学習・エンジニア転職関連の情報

自宅で現役エンジニアから学べる『TechAcademy』 (エンジニア転職保証)

『GEEK JOBキャンプ』スピード転職コース(無料)

【IT道場】入校時0円! 就職目的プログラミングスクール

エンジニア転職なら100%「自社開発」求人に強い【クラウドリンク】

『techgym』 (Python特化・無料)

PHP / Laravel書籍

参考・引用

  1. PHPで配列から特定の要素を削除する
  2. array_splice
  3. unset
  4. array_values
  5. array_diff

最近の投稿