質問: PHPはどのように変数の管理と保存をしているのですか? **PHPでは、同じ変数を使って整数、文字列、ブール、配列とか保存することが出来ます。** **しかしPHPがどうやって変数を管理と保存しているのか分かりません。インタプリタが裏で C変数を作成して扱っているのでしょうか。** 分かる方いますか?宜しくお願いします。
回答: PHPマニュアルより抜粋 > PHP 変数は「zval」と呼ばれるコンテナに保管されます。> zval コンテナには、変数の型と値の他に、情報の追加ビットを2つ含みます。1つ目は「is_ref」と呼ばれ、変数が「参照集合」の一部かどうかを示すブール値です。このビットによって、通常の変数と参照を区別する方法を PHP エンジンが知ります。 > &演算子によって作成されるように、PHP ではユーザーランドを参照できるので、zval コンテナもメモリー使用状況を最適化するための内部的な参照カウント機構を持ちます。 > 追加情報の2つ目は「refcount」と呼ばれ、この1つの zval コンテナをどれだけ多くの変数名(シンボルとも呼ばれます)が指すかを含みます。シンボルは全てシンボルテーブルに保管され、スコープごとにシンボルテーブルの1つがあります。 > 関数やメソッドごとのスコープばかりではなく、メインスクリプト用のスコープ > (すなわち、ブラウザによってリクエストされたスクリプト)があります。 下記マニュアル