上記の答えは素晴らしいです。特に、「両方のメソッドの重要な違いは、unset($ a)がシンボルテーブルから$aも削除することです」というコメントです。
しかし、この2つがどのように使用されているかを説明していないため、実際的な意味で質問に完全に答えた人はいないと思います。OK私たちは両方とも基本的に同じことをしていることを知っていると思います。なぜ一方を他方の上に使用するのですか?
ヌル
PHPがメモリ/ガベージコレクションを自己管理しているにもかかわらず、メモリをすぐに再利用します(費用はかかります)。
unset()
「到達できるときに」メモリを再利用するため、通常は推奨されます。したがって、リソースをすぐに割り当てないため、より高速であると見なされます。
nullとunsetをいつ使用する必要がありますか?
基本(スモールデータ)データ配列などは、メモリが問題にならないため、未設定の候補として適しています。データセットが大きい場合や、メモリをすぐに再利用する必要がある場合は、nullの方が適しています。たとえば、このような大規模なデータベースリクエストは、関数などで複数回呼び出された場合にPHPメモリの上限を非常に迅速に食いつぶす可能性があり、メモリがいっぱいになるなどして500ページのエラーが発生します。 )そしてメモリの蓄積の心配がほとんどないとき。
例:大きな配列を取得してMemCacheに配置します。
list($inv1, $inv2, $inv3, $inv4) = array_chunk($inventory_array),
ceil(count($val['inventory']) / 4));
MemCache::set($cacheKeyInv1, $inv1, $expiry);
MemCache::set($cacheKeyInv2, $inv2, $expiry);
MemCache::set($cacheKeyInv3, $inv3, $expiry);
MemCache::set($cacheKeyInv4, $inv4, $expiry);
for ($i = 1; $i < 5; $i++) {
${"inv" . $i} = null; // why not use unset ?
}
forループはデータをクリーンアップするため、nullまたはunsetを使用できますが、データセットが大きいため、メモリをより迅速に再利用できるため、nullが推奨されます。