PHPでのunsetの使い方とは?基本的な使い方から応用編までわかりやすく紹介!

- システム
エンジニア - PHPでのunsetの使い方について教えていただけますか。
- プロジェクト
マネージャー - 分かりました。PHPでのunsetの基本的な使い方から応用編までご紹介しましょう。
PHPでのunsetの使い方とは?
今回は、PHPでのunsetの使い方について説明します。
unsetを使うと、変数を未定義の状態にできます。基本的な使い方から、配列や連想配列、多次元配列に対するunsetの使い方について紹介します。
PHPでのunsetの使い方に興味のある方はぜひご覧ください。
変数
PHPでのunsetの使い方を紹介します。実際のソースコードを見てみましょう。
1 2 3 4 5 6 7 8 |
// 変数宣言 $val = 3; // 変数削除 unset($val); // 変数表示(エラーになる) print($val); |
実行結果は以下のようになります。
1 |
PHP Notice: Undefined variable: val in ... |
unsetした変数を使用すると、「Undefined variable」のエラーが表示されます。変数が未定義の状態になっていることが分かります。
unsetには、複数変数を指定することもできます。isset()は変数が定義されているか否かを返却します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
// 変数宣言 $val1 = 3; $val2 = 4; $val3 = 5; $val4 = 6; // 複数変数の削除 unset($val1, $val2, $val3); // 変数表示 var_dump(isset($val1)); // bool(false) var_dump(isset($val2)); // bool(false) var_dump(isset($val3)); // bool(false) var_dump(isset($val4)); // bool(true) |
実行結果は以下のようになります。
1 2 3 4 |
bool(false) bool(false) bool(false) bool(true) |
配列
PHPでの配列に対するunsetの使い方を紹介します。実際のソースコードを見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
// 配列宣言 $myarray = ['item1', 'item2', 'item3', 'item4', 'item5']; // 配列の全削除 unset($myarray); // 配列表示 var_dump(isset($myarray)); // bool(false) ////////////////////////////////////////////////////////// // 配列宣言 $myarray = ['item1', 'item2', 'item3', 'item4', 'item5']; // 配列の削除 unset($myarray[1]); // 配列表示 print_r($myarray); //Array //( // [0] => item1 // [2] => item3 // [3] => item4 // [4] => item5 //) // indexを詰める $myarray = array_values($myarray); // 配列表示 print_r($myarray); //Array //( // [0] => item1 // [1] => item3 // [2] => item4 // [3] => item5 //) |
実行結果は以下のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
bool(false) Array ( [0] => item1 [2] => item3 [3] => item4 [4] => item5 ) Array ( [0] => item1 [1] => item3 [2] => item4 [3] => item5 ) |
このようにPHPでは配列自体の削除や、配列要素の削除ができます。
配列の値を検索して削除する方法を紹介します。実際のソースコードを見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
// 配列宣言 $myarray = ['item1', 'item2', 'item1', 'item11', 'item5']; // 'item1'を削除対象とする。 // 完全一致(第3引数true)で'item1'が存在するindexを取得 $del_indexes = array_keys($myarray, 'item1', true); // 'item1'が存在するindexのループ foreach($del_indexes as $del_index){ // 'item1'の削除 unset($myarray[$del_index]); } // 配列の要素を詰める $myarray = array_values($myarray); // 結果表示 print_r($myarray); |
1 2 3 4 5 6 |
Array ( [0] => item2 [1] => item11 [2] => item5 ) |
連想配列
PHPでの連想配列に対するunsetの使い方を紹介します。実際のソースコードを見てみましょう。
1 2 3 4 5 6 7 8 |
// 連想配列を定義 $myarray = ['key1'=>'value1', 'key2'=>'value2', 'key3'=>'value3', 'key4'=>'value4', 'key5'=>'value5']; // 連想配列の指定した要素を削除 unset($myarray['key3']); // 結果表示 print_r($myarray); |
実行結果は以下のようになります。
1 2 3 4 5 6 7 |
Array ( [key1] => value1 [key2] => value2 [key4] => value4 [key5] => value5 ) |
連想配列ではkeyの重複はできませんが、valueは重複できます。
連想配列の値を検索して削除する方法を紹介します。実際のソースコードを見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// 配列宣言 $myarray = ['key1'=>'value1', 'key2'=>'value3', 'key3'=>'value3', 'key4'=>'value4', 'key5'=>'value33']; // 'value3'を削除対象とする。 // 完全一致(第3引数true)で'value3'が存在するkeyを取得 $del_indexes = array_keys($myarray, 'value3', true); // 'value3'が存在するkeyのループ foreach($del_indexes as $del_index){ // 値が'value3'の要素を削除 unset($myarray[$del_index]); } // 結果表示 print_r($myarray); |
実行結果は以下のようになります。
1 2 3 4 5 6 |
Array ( [key1] => value1 [key4] => value4 [key5] => value33 ) |
多次元配列
PHPでの多次元配列に対するunsetの使い方を紹介します。実際のソースコードを見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
$myarray = array( array('name' => 'ichiro', 'age' => 20, 'student_id' => 23415, 'email' => 'ichiro@email.com' ), array('name' => 'jiro', 'age' => 27, 'student_id' => 56435, 'email' => 'jiro@email.com' ), array('name' => 'saburo', 'age' => 32, 'student_id' => 74792, 'email' => 'saburo@email.com' ), array('name' => 'shiro', 'age' => 34, 'student_id' => 18368, 'email' => 'shiro@email.com' ), array('name' => 'goro', 'age' => 37, 'student_id' => 13457, 'email' => 'goro@email.com' ), ); // 行単位で処理する関数 function array_col_delete(&$row, $key, $del_key) { // 要素の削除 unset($row[$del_key]); } // 削除するキー $del_key = "age"; // array_walkで行単位でarray_col_delete()を実行 array_walk($myarray, "array_col_delete", $del_key); // 結果表示 var_dump($myarray); |
実行結果は以下のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
array(5) { [0]=> array(3) { ["name"]=> string(6) "ichiro" ["student_id"]=> int(23415) ["email"]=> string(16) "ichiro@email.com" } [1]=> array(3) { ["name"]=> string(4) "jiro" ["student_id"]=> int(56435) ["email"]=> string(14) "jiro@email.com" } [2]=> array(3) { ["name"]=> string(6) "saburo" ["student_id"]=> int(74792) ["email"]=> string(16) "saburo@email.com" } [3]=> array(3) { ["name"]=> string(5) "shiro" ["student_id"]=> int(18368) ["email"]=> string(15) "shiro@email.com" } [4]=> array(3) { ["name"]=> string(4) "goro" ["student_id"]=> int(13457) ["email"]=> string(14) "goro@email.com" } } |
array_walkで行単位でarray_col_delete()を実行しています。
- システム
エンジニア - PHPでのunsetの使い方についてよく分かりました。
- プロジェクト
マネージャー - ご紹介したPHPでのunsetの基本的な使い方から、配列や連想配列、多次元配列に対するunsetの使い方を参考にご自身でもソースコードを書いて理解を深めてください。
まとめ
いかがでしたでしょうか。PHPでのunsetの使い方について説明しました。
unsetを使うと、変数を未定義の状態にできます。基本的な使い方から、配列や連想配列、多次元配列に対するunsetの使い方について紹介しました。
ぜひご自身でPHPのソースコードを書いて、理解を深めてください。
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。

-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社夢真ビーネックスグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。


新着案件New Job
開発エンジニア/東京都品川区/【WEB面談可】/在宅ワーク
月給29万~30万円東京都品川区(大崎駅)遠隔テストサービス機能改修/JavaScript/東京都港区/【WEB面談可】/テレワーク
月給45万~60万円東京都港区(六本木駅)病院内システムの不具合対応、保守/東京都豊島区/【WEB面談可】/テレワーク
月給30万~30万円東京都豊島区(池袋駅)開発/JavaScript/東京都豊島区/【WEB面談可】/テレワーク
月給50万~50万円東京都豊島区(大塚駅)債権債務システム追加開発/東京都文京区/【WEB面談可】/在宅勤務
月給62万~67万円東京都文京区(後楽園駅)PMO/東京都豊島区/【WEB面談可】/在宅勤務
月給55万~55万円東京都豊島区(池袋駅)