
日期:2006-06-01 作者:喜騰小二 來源:PHPChina
在我最近做的一個項目中,我發現了一個新的概念,關於在PHP中使用變量的變量。在我的程序中,我需要在一個页面同時更新多個記錄,在我經?嗟背な奔涞耐純嗨妓髦?螅?院V信既壞厣料殖隽吮淞康謀淞浚?ariable variable)這一概念,所有的困惑就一掃而光了。
介紹
什麼叫作變量的變量?根據PHP手冊,變量的變量是指取得一個變量的值並把它作為另一個變量的變量名。這表述顯得相當的直接,容易和那些在一個句子中使用“變量”這個詞弄混淆。給一個簡單的例子,妳定義一個變量 --- x 等於 this --- 然後定義一個變量的變量,意味着妳把 x 的值作為新變量的名,在這個例子中,這個新變量的值是 is cake。用PHP來表示如下:
$x = "this";
$$x = "is cake";
?>
這個符號$$是在PHP中對變量的變量的表示方法。現在我們可以用兩種不同的方式來引用這兩個變量 $x 和 $$x 了。
echo "$x ${$x}";
?>
echo "$x $this";
?>
上麵兩段程序都將輸出 this is cake。注意,在echo語句中$$x被寫成${$x},這是讓PHP知道妳要輸出的是變量的變量而不是一個$字符與$x變量。
妳是不是仍很迷惑?哦,也許吧,妳想要一些更深入更有用的例子?下一節,我將嚮妳展示怎樣用變量的變量在一個页面編輯多條記錄的。
例子
假設妳已有一個MySQL數據庫,保存了對一些感興趣的站點的鏈接,庫中有一個表submissions,字段如下:
SubmissionID
PostedBy
Link
Description
Approved
現在妳想顯示在表中所有的已創建但沒有被認可的鏈接,這個編輯的页面應可以更正一些輸入時的錯誤,並用適當的單選按鈕來為每一個記錄設置是否允許(Approved),然後一次把更新後的記錄都提交到表中。
首先,當妳從數據庫出提取所有的記錄並顯示出來時,妳必須為每一個記錄設置一個唯一的名字,這將讓我們在提交時可以循環地辯別出各個記錄的值。代碼如下:
//初始化變量的記數器
$index = 0;
$index_count = 0;
echo "