はい、それは解放されます。
これは、次を使用して確認できます。
function a() {
$var = "Hello World";
$content = "";
for ($i = 0; $i < 10000; $i++) {
$content .= $var;
}
print '<br>$content size:'.strlen($content);
print '<br>memory in function:'.memory_get_usage();
return null;
}
print '<br>memory before function:'.memory_get_usage();
a();
print '<br>memory after function:'.memory_get_usage();
出力:
memory before function:273312
$content size:110000
memory in function:383520
memory after function:273352
関数の前に、PHPは273312バイトを使用していました。
関数が終了する前に、メモリ使用量を再度
確認し、383520を使用しました。$contentのサイズである110000バイトを確認しました。
273312 + 110000 = 383312
残りの208バイトは他の変数からのものです($ contentのみをカウントしました)
関数が終了した後、メモリ使用量を再度チェックし、以前とほぼ同じ(ほぼ(40バイトの差))に戻りました。
40バイトの違いは、関数宣言とforループ宣言である可能性があります。