在我最近做的一個項目中,我發(fā)現(xiàn)了一個新的概念,關(guān)于在PHP中使用變量的變量,在我的程序中,我需要在一個頁面同時更新多個記錄,在我經(jīng)過相當長時間的痛苦思考之后,腦海中偶然地閃現(xiàn)出了變量的變量(variable variable)這一概念,所有的困惑就一掃而光了。
介紹:什么叫作變量的變量?根據(jù)PHP手冊,變量的變量是指取得一個變量的值并把它作為另一個變量的變量名。這表述顯得相當?shù)闹苯樱p易和那些在一個句子中使用“變量”這個詞弄混淆。給一個簡單的例子,你定義一個變量 --- x 等于 this --- 然后定義一個變量的變量,意味著你把 x 的值作為新變量的名,在這個例子中,這個新變量的值是 is cake。用PHP來表示如下:
這個符號$$是在PHP中對變量的變量的表示方法,現(xiàn)在我們可以用兩種不同的方式來引用這兩個變量 $x 和 $$x 了。
上面兩段程序都將輸出 this is cake,注意,在echo語句中$$x被寫成${$x},這是讓PHP知道你要輸出的是變量的變量而不是一個$字符與$x變量。
你是不是仍很迷惑?哦,也許吧,你想要一些更深入更有用的例子?下一節(jié),我將向你展示怎樣用變量的變量在一個頁面編輯多條記錄的。
例子:假設(shè)你已有一個MySQL數(shù)據(jù)庫,保存了對一些感愛好的站點的鏈接,庫中有一個表submissions,字段如下:
現(xiàn)在你想顯示在表中所有的已創(chuàng)建但沒有被認可的鏈接,這個編輯的頁面應可以更正一些輸入時的錯誤,并用適當?shù)膯芜x按鈕來為每一個記錄設(shè)置是否答應(Approved),然后一次把更新后的記錄都提交到表中。
首先,當你從數(shù)據(jù)庫出提取所有的記錄并顯示出來時,你必須為每一個記錄設(shè)置一個唯一的名字,這將讓我們在提交時可以循環(huán)地辯別出各個記錄的值,代碼如下: