Search

検索したいワードを入力してください

2019年01月24日

【初学者向け】PHPのunset関数で配列要素を削除する方法

PHPのunset関数は変数や配列、配列要素を削除することができます。プログラムを書くにあたり、不要になった変数や配列を解放することは大切です。引数に削除対象を指定するだけで簡単に削除できるunset関数の使い方をご紹介します

unset関数とは

PHPのunset関数とは引数に指定した変数や配列の割り当てを外す関数です。不要になった変数や配列、配列の要素を削除するときに使います。

使うと便利なunset関数

PHPのunset関数は変数や配列自体を削除するのに使われますが、配列の特定の要素を削除することもできます。また、複数の変数や配列要素をまとめて削除することもできます。

特に連想配列や変数の場合、不要になった変数や要素をそのままにしておくと、その後同じ名前の変数や同じキーの連想配列を使用するときに名前やキーが衝突してしまいます。

トラブルを避けるためにも削除することが大切です。そんな時に使えるのがunset関数です。

PHPのunset関数の使い方

PHPのunset関数の基本的な書き方、使い方について解説します。

unset関数の書き方

unset(【削除したい変数、配列、配列要素】);
PHPのunset関数の基本的な書き方は、unset関数の引数に削除したい変数、配列、配列の要素を指定するだけです。次にそれぞれの使い方を解説していきます。

変数を削除・複数削除する

変数を削除するときは例えば以下のように書きます。
unset($var);

また、以下のように複数の変数を「,」で区切って指定することで複数の変数をまとめて削除できます。
unset($var1,$var2,$var3);

配列・配列の要素を削除

PHPのunset関数で配列や配列要素を削除するには引数に削除したい配列、配列要素を指定します。例えば、配列$arrayをunset関数を用いて削除したいときは以下のようにします。
unset($array);

配列$arrayの添字2の要素を削除するには以下のように書きます。
unset($array[2]);

PHPのunset関数で配列の要素を削除する時には、その要素が削除されても他の要素の添字の位置は変わりません。以下の例を見てみましょう。


<?php
$color = array( ‘red’, ‘green, ‘blue’, ‘yellow’, ‘orange’ );
unset($color[3]);
print_r($color);
?>


実行結果
Array ( [0] => red [1] => green [2] => blue [4] => orange ) 

配列の添字3の要素のみがなくなり、他の要素の添字はそのままです。

連想配列の要素を削除する

連想配列の要素を削除する時も数字の添字の配列の時と同じく、削除したい要素をunset関数の引数に指定します。

例えば、連想配列$animalのキー「lion」の要素を削除したい場合には以下のようにします。
unset($animal[‘lion’]);

以下の例では連想配列$fruitsColorの’banana’をキーとする要素がunset関数により削除されています。


<?php
$fruitsColor = array( ‘apple’=>’red’, ‘banana’=>’yellow’, ‘melon’=>’green’, ‘orange’=>’orange’);
unset($fruitsColor[‘banana’]);
print_r($fruitsColor);
?>


実行結果
Array ( [apple] => red [melon] => green [orange] => orange ) 

実行結果から$fruitsColor[‘banana’]の要素が削除されていることが分かります。

unset関数以外でも配列を削除できる

PHPではunset関数以外でも配列を削除することができます。次項でarray_splice関数、array_diff関数、array_shift関数、array_pop関数の4つの関数を紹介します。

PHPでunset関数を使わずに配列要素を削除する

PHPではunset関数以外にも配列要素を削除する関数があります。

unset関数で配列要素を削除するとその要素が削除されても他の要素の数字の添字は変わりません。削除した分の場所も詰めたい場合にも便利な4つの関数を紹介します。

array_splice関数

PHPのarray_splice関数は、配列の一部を削除したり配列の一部を置換したりする関数です。
以下に3つの使い方の例を紹介します。

使い方例1 指定した添字以降の要素をすべて削除

<?php
$animal = array( ‘lion’, ‘tiger’, ‘elephant’, ‘dog’, ‘cat’, ‘bird’ );
array_splice($animal, 3);
print_r($animal);
?>


実行結果
Array ( [0] => lion [1] => tiger [2] => elephant ) 

使い方例2 指定した添字から指定された数の要素だけ削除

<?php
$animal = array( ‘lion’, ‘tiger’, ‘elephant’, ‘dog’, ‘cat’, ‘bird’ );
array_splice($animal, 2, 3);
print_r($animal);
?>


実行結果
Array ( [0] => lion [1] => tiger [2] => bird )

使い方例3 指定した添字の要素を置換

<?php
$animal = array( ‘lion’, ‘tiger’, ‘elephant’, ‘dog’, ‘cat’, ‘bird’ );
array_splice($animal, 3, 1, ‘deer’);
print_r($animal);
?>


実行結果
Array ( [0] => lion [1] => tiger [2] => elephant [3] => deer [4] => cat [5] => bird ) 

array_diff関数

PHPのarray_diff関数は、引数に指定した配列の差分を返してくれる関数です。
引数に指定した配列の本体から要素が削除されるわけではありませんが、指定した配列に共通に含まれる要素を除いた配列を取得することができます。

以下の例では2つの配列$animal1と$animal2の2つの配列をarray_diff関数の引数に指定しています。

<?php
$animal1 = array( ‘lion’, ‘tiger’, ‘elephant’, ‘dog’, ‘cat’, ‘bird’ );
$animal2 = array( ‘elephant’, ‘dog’, ‘bird’ );
$result = array_diff($animal1, $animal2);
print_r($result);
?>


実行結果
Array ( [0] => lion [1] => tiger [4] => cat ) 

array_diff関数により、2つの配列の差分である、’lion’, ’tiger’, ‘cat’のみが抜き出され、共通要素である’elephant’, ‘dog’, ‘bird’が結果的に削除された形で返されています。

array_shift関数

PHPのarray_shift関数は、配列の先頭から要素を1つ取り出して消去する関数です。配列の先頭要素の値を返し、引数に指定した配列は先頭要素が削除されて残りの要素はすべて1つずつ前にずれます。

以下の例では、array_shift関数により先頭要素が抜き出されて削除され、他の要素が1つずつ前にずれています。また、配列の長さが5に減っています。


<?php
$animal = array( 'lion', 'tiger', 'elephant', 'dog', 'cat', 'bird' );
print_r($animal);
echo '<br>';
echo '削除前の配列の長さは'.count($animal);
echo '<br>';
$varAnimal = array_shift($animal);
print_r($animal);
echo '<br>';
echo '削除後の配列の長さは'.count($animal);
echo '<br>';
echo '削除されたのは'.$varAnimal;
?>

実行結果
Array ( [0] => lion [1] => tiger [2] => elephant [3] => dog [4] => cat [5] => bird ) 
削除前の配列の長さは6
Array ( [0] => tiger [1] => elephant [2] => dog [3] => cat [4] => bird ) 
削除後の配列の長さは5
削除されたのはlion

array_pop関数

PHPのarray_pop関数は、配列の末尾から要素を1つ取り出して消去する関数です。配列の末尾要素の値を返し、引数に指定した配列は末尾の要素が消去されて1つ分長さが短くなります。

以下の例では、array_shift関数により末尾要素が抜き出されて削除されて配列の長さが5に減っています。


<?php
$animal = array( 'lion', 'tiger', 'elephant', 'dog', 'cat', 'bird' );
print_r($animal);
echo '<br>';
echo '削除前の配列の長さは'.count($animal);
echo '<br>';
$varAnimal = array_pop($animal);
print_r($animal);
echo '<br>';
echo '削除後の配列の長さは'.count($animal);
echo '<br>';
echo '削除されたのは'.$varAnimal;
?>

実行結果
Array ( [0] => lion [1] => tiger [2] => elephant [3] => dog [4] => cat [5] => bird ) 
削除前の配列の長さは6
Array ( [0] => lion [1] => tiger [2] => elephant [3] => dog [4] => cat ) 
削除後の配列の長さは5
削除されたのはbird

まとめ

いかがだったでしょうか。PHPのunset関数は引数に削除対象を指定するだけで変数や配列、配列要素を削除できる便利な関数です

配列の要素を削除するときには、残りの要素の添字はそのままになるという性質もあります。unset関数と、紹介した他の4つの関数array_splice関数、array_diff関数、array_shift関数、array_pop関数をうまく使い分けて、不要な変数や配列を削除したり、配列を操作してみてください。

【PR】多くの人がプログラミングを諦めてしまう理由をご存知ですか?



近年プログラミングを勉強する人が増えています。

プログラミング学習者の多くは独学から取り組もうとしますが、だいたい80%ほどは3ヶ月も続かずに諦めてしまいます。早い人は1日目で。

多くの人がプログラミングを独学しようとして諦める理由は、次の3つ。
●モチベーションが維持できない
●エラーの原因・解決方法が分からない
●どう学習すればよいか分からない

TechBoostというプログラミングスクールでは、みんなと一緒にプログラミングをするのでモチベーションの維持ができ、分からないことがあればマンツーマンで教えてくれ、徹底的に研究された初心者向けの教材が揃っています。

TechBoostを卒業後、実際にエンジニアとして転職した方もいるほど。

本気でプログラミングを学びたい方は、一度無料のカウンセリングでご相談ください。プログラミングを嫌いになる前に。

tech boostについて

オーダーメイド型の学習コンテンツを提供する「tech boost」 は、エンジニアのキャリア支援に特化したサービスを複数展開している株式会社Branding Engineerが運営しているプログラミングスクールです。最短3ヶ月間で、未経験から『プログラミングの基礎』、『実際に業務で必要となるスキル』、『今のトレンドとなっている知識』まで学べ、ご希望の方にはプロのキャリアアドバイザーによる就業支援を行うことができます。

tech boost卒業生インタビュー

tech boostの卒業生の声を聞きました。あなたがプログラミングを学びたい理由を、一度考えてみてください。
営業→Javaエンジニア→Rubyエンジニアと転向し、第一志望のFinTech企業で働く山下さん
元営業、ビジネスのわかるエンジニアを目指す菅原さん
サンフランシスコに交換留学し、シリコンバレーのVCでインターン中の梅本さん
予備校の営業から半年でエンジニア転職を果たした小田島さん

tech boostの口コミ



Related