PHP 配列要素の削除
1. PHP 配列要素の削除
PHP では、用途に応じて複数の関数を使用して Array(配列)の Item(要素)を削除できます。
array_splice()- 開始位置と長さを指定して、Array の一部を削除します。unset()- 特定の Key(キー)に関連付けられた要素を削除します。array_diff()- Associative Array(連想配列)から特定の要素を取り除きます。array_pop()- Array の最後の要素を削除します。array_shift()- Array の最初の要素を削除します。
2. PHP array_splice() 関数
array_splice() 関数では、削除を開始する Index(インデックス)と、削除する項目の数を指定します。
削除後、Array は自動的に再インデックス(0 から順に振り直し)されます。
2.1 例:2番目の要素を削除する
$cars = array("Volvo", "BMW", "Toyota");
// インデックス 1 から 1 つ削除
array_splice($cars, 1, 1);
var_dump($cars);2.2 複数の要素を削除する
複数の項目を削除する場合、array_splice() の Length パラメーターに削除したい数を指定します。
例:2番目(インデックス 1)から 2 つの要素を削除する
$cars = array("Volvo", "BMW", "Toyota");
array_splice($cars, 1, 2);
var_dump($cars);3. PHP unset() 関数
unset() 関数を使用して、既存の Array 要素を削除することもできます。
重要:unset() 関数は Array の再インデックスを行いません。そのため、インデックス 1 の要素を削除した場合、他の要素(インデックス 0, 2, 3 など)は元のインデックスを保持し、インデックスのシーケンスに「欠番(ギャップ)」が生じます。
3.1 例:2番目の要素を削除する
$cars = array("Volvo", "BMW", "Toyota");
unset($cars[1]);
var_dump($cars);3.2 複数の要素を削除する
unset() は無制限に引数を取ることができるため、一度に複数の Array 要素を削除することが可能です。
例:1番目と2番目の要素を削除する
$cars = array("Volvo", "BMW", "Toyota");
unset($cars[0], $cars[1]);
var_dump($cars);4. 連想配列からの要素削除
Associative Array(連想配列)から要素を削除する場合も、unset() 関数を使用します。削除したい要素の Key を指定してください。
4.1 例:"model" キーを削除する
$cars = array("brand" => "Ford", "model" => "Mustang", "year" => 1964);
unset($cars["model"]);
var_dump($cars);5. PHP array_diff() 関数
array_diff() 関数を使用して、Associative Array から特定の要素を取り除くこともできます。
この関数は、指定された要素を除外した新しい配列を返します。
5.1 例:"Mustang" と 1964 を除外した新しい配列を作成する
$cars = array("brand" => "Ford", "model" => "Mustang", "year" => 1964);
$newarray = array_diff($cars, ["Mustang", 1964]);
var_dump($newarray); 注意:array_diff() 関数は、Key(キー)ではなく Value(値)をパラメーターとして受け取ります。
6. PHP array_pop() - 末尾の要素を削除
array_pop() 関数は、Array の最後にある要素を削除します。
6.1 例:最後の要素を削除する
$cars = array("Volvo", "BMW", "Toyota");
array_pop($cars);
var_dump($cars);7. PHP array_shift() - 先頭の要素を削除
array_shift() 関数は、Array の最初にある要素を削除します。
7.1 例:最初の要素を削除する
$cars = array("Volvo", "BMW", "Toyota");
array_shift($cars);
var_dump($cars);