【PHP入門】キーを指定して配列の要素を削除する方法(unset関数の使い方)
PHPで配列の要素を削除するには、unset() 関数を使用します。削除したい要素のキー(インデックス)を指定することで、その要素だけを配列から取り除くことができます。
この記事では、一次元配列と多次元配列それぞれのケースで、キーを指定して要素を削除する具体的なコード例を紹介します。
例1:数値インデックスの配列から要素を削除する
まずは、基本的な一次元配列から特定のキーの要素を削除する例を見てみましょう。
<?php
$arr = array("John", "Jacob", "Tom", "Tim");
echo "Array with leading and trailing whitespaces...\n";
foreach($arr as $value) {
echo "Value = $value \n";
}
echo "\nComma separated list...\n";
print_r(implode(', ', $arr));
// 各要素の前後の空白を除去した新しい配列を作成
$result = array_map('trim', $arr);
echo "\nUpdated Array...\n";
foreach($result as $value) {
echo "Value = $value \n";
}
// キー「1」の要素(Jacob)を削除
unset($result[1]);
echo "\nUpdated Array...\n";
foreach($result as $value) {
echo "Value = $value \n";
}
?>
出力結果
Array with leading and trailing whitespaces... Value = John Value = Jacob Value = Tom Value = Tim Comma separated list... John , Jacob , Tom , Tim Updated Array... Value = John Value = Jacob Value = Tom Value = Tim Updated Array... Value = John Value = Tom Value = Tim
ポイント: unset($result[1]) を実行すると、キーが「1」の要素「Jacob」が配列から完全に削除されます。なお、unset() は残りの要素のキーを自動的に振り直さないため、インデックスには「0」と「2」「3」が残る点に注意してください。連番に戻したい場合は、array_values() 関数を使って再インデックス化できます。
例2:多次元配列(連想配列)から要素を削除する
次に、キーに文字列を使う連想配列や、入れ子になった多次元配列の場合の例です。
<?php $marks = array( "kevin" => array( "physics" => 95, "maths" => 90, ), "ryan" => array( "physics" => 92, "maths" => 97, ), ); echo "Marks for kevin in physics : "; echo $marks['kevin']['physics'] . "\n"; echo "Marks for ryan in maths : "; echo $marks['ryan']['maths'] . "\n"; // キー「ryan」の要素を丸ごと削除 unset($marks["ryan"]); echo "Marks for ryan in maths : "; echo $marks['ryan']['maths'] . "\n"; ?>
出力結果
このコードを実行すると、次のような出力になります。最後の行では、すでに削除された要素へアクセスしようとしているため、エラー(Notice)が発生します。
Marks for kevin in physics : 95 Marks for ryan in maths : 97 Marks for ryan in maths : PHP Notice: Undefined index: ryan in /home/cg/root/6985034/main.php on line 25
注意: unset() で削除済みのキーにアクセスすると、「Undefined index」という通知(Notice)が出ます。実運用のコードでは、isset() や array_key_exists() でキーの存在を事前に確認してからアクセスするのが安全です。
まとめ
- PHPで配列の要素を削除するには unset(配列[キー]) を使う
- 数値インデックスでも文字列キー(連想配列)でも同じように削除できる
- unset() 後はキーが詰められないため、必要なら array_values() で再インデックス化する
- 削除後のキーへのアクセスはエラーになるので、存在チェックを行うのがベストプラクティス
-
PHPのarray_key_exists()関数とは?使い方とサンプルコードを解説
PHPのarray_key_exists()関数は、指定したキーが配列内に存在するかどうかをチェックするための関数です。キーが存在する場合は true を返し、存在しない場合は false を返します。基本構文array_key_exists(key, arr)パラメータkey − 存在を確認したいキーを指定します。文字列や整数など、配列のキーとして有効な値を指定できます。arr − キーを検索する対象となる配列を指定します。戻り値array_key_exists()関数は、指定したキーが配列内に存在すれば true を、存在しなければ false を返します。使用例以下の例では、連想配列の中
-
C#の配列から要素を削除する方法【サンプルコード付きで解説】
C#の配列は固定長のため、要素を直接「削除」することはできません。そこで一般的に用いられるのが、削除したい位置以降の要素を一つ前へずらす(シフトする)ことで、実質的にその要素を取り除く手法です。 基本的な考え方:要素をシフトして削除する まず、次のように5つの要素を持つ配列を用意します。 int[] arr = new int[5] {35, 50, 55, 77, 98}; たとえば2番目の位置(pos = 2、つまり arr[1])の要素「50」を削除したい場合は、その位置より後ろにある要素をすべて一つずつ前に移動させます。 // 削除位置以降の要素を前方へシフト for (i