PHPで「配列の中身を全部消したい」というとき、方法はいくつかあります。多くの場合は $array = [] で十分ですが、変数ごと消すのか・中身だけ消すのかで適切な方法が変わります。この記事では代表的な方法と、その違い・使い分けを解説します。
この記事の結論:配列を空にする最も簡単で標準的な方法は
$array = []; です。変数自体を消すなら unset($array)、中身だけ消して変数は残すなら array_splice($array, 0) を使います。$array = [] で再初期化する(推奨)
もっとも簡単で標準的なのが、空の配列を代入し直す方法です。[] は array() の短縮記法で、現在はこちらが主流です。
空配列を代入
<?php
$array = [1, 2, 3];
$array = []; // 空にする(array() と同じ意味)
var_dump($array); // array(0) {}
$array = array() で再初期化する
古い書き方ですが array() でも同じく空にできます。結果は [] と同一です。新しいコードでは [] を使えば十分です。
array()で再初期化
<?php $array = [1, 2, 3]; $array = array(); // [] と同じ
unset()で変数ごと削除する
unset() は変数そのものを削除します。「空の配列にする」のではなく「変数を消す」点に注意してください。削除後にその変数を使うと未定義変数の警告が出ます。
unsetで変数を削除
<?php $array = [1, 2, 3]; unset($array); // $array 自体が無くなる // echo count($array); // Warning: Undefined variable $array
「もう使わない」配列の後始末なら
unset()、「中身を空にして使い続ける」なら $array = [] と覚えると分かりやすいです。未定義変数の警告についてはUndefined variable の解決方法を参照してください。array_splice()で中身だけ削除する
array_splice($array, 0) は、変数は残したまま要素を全削除します。配列を直接書き換える(破壊的)関数で、結果として空配列になります。
array_spliceで全要素削除
<?php
$array = [1, 2, 3];
array_splice($array, 0); // 全要素を削除
var_dump($array); // array(0) {}
foreachでキーを1つずつ削除する
条件付きで一部だけ消したい場合は、foreach でキーを指定して unset() します。全削除にも使えますが、全部消すだけなら $array = [] のほうが簡潔です。
foreachで条件付き削除
<?php
$array = [1, 2, 3, 4];
foreach ($array as $key => $value) {
if ($value % 2 === 0) {
unset($array[$key]); // 偶数だけ削除
}
}
var_dump($array); // [0 => 1, 2 => 3](キーは振り直されない)
unset($array[$key]) で要素を消すとキーは振り直されません(0,2 のように歯抜けになります)。連番に直したいときはarray_values() を通してください。方法の使い分け
| 方法 | 結果 | 向いている場面 |
|---|---|---|
$array = [] |
空の配列になる | 基本。中身を空にして使い続ける |
unset($array) |
変数ごと消える | もう使わない配列の後始末 |
array_splice($array, 0) |
中身が空になる | 配列を直接書き換えたい |
foreach + unset |
指定要素を削除 | 条件付きで一部だけ消す |
よくある質問(FAQ)
Q一番簡単に配列を空にする方法は?
A
$array = []; です。空の配列を代入し直すだけで、最も簡潔・標準的です。array() でも同じ結果になります。Qunsetと$array = []の違いは?
A
$array = [] は空の配列にする(変数は残る)、unset($array) は変数そのものを消す(以降使うと警告)です。配列を使い続けるなら []、完全に破棄するなら unset() です。Q一部の要素だけ削除したいです。
Qarray_spliceと$array = []はどちらが良いですか?
A通常は
$array = [] で十分です。array_splice($array, 0) は配列を直接書き換える用途で使いますが、単に全部空にするだけなら [] のほうがシンプルで分かりやすいです。まとめ
PHPで配列を空にする方法を整理します。
- 基本は
$array = [](array()も同じ) - 変数ごと消すなら
unset($array)(以降の参照は警告) - 中身だけ消して変数を残すなら
array_splice($array, 0) - 条件付き削除は
foreach + unset(キーは振り直されない) - 歯抜けキーを連番に戻すなら
array_values()
関連として、array_valuesで値を取得・キーを振り直す方法・配列の要素数をカウントする方法・配列に要素を追加する方法もあわせて読むと、PHPの配列操作に強くなれます。

