變數的變數,PHP 和 你

2022-04-09 03:52:01 字數 1562 閱讀 4051

在我最近做的乙個專案中,我發明了乙個新的概念,關於在php中應用變數的變數。在我的程式中,我需要在乙個頁面同時更新多個記錄,在我經過相當長時間的苦楚思考之後,腦海中偶然地閃現出了變數的變數(variable variable)這一概念,所有的困惑就一掃而光了。

先容什麼叫作變數的變數?根據php手冊,變數的變數是指取得乙個變數的值並把它作為另乙個變數的變數名。這表述顯得相當的直接,輕易和那些在乙個句子中應用「變數」這個詞弄混雜。給乙個簡略的例子,你定義乙個變數 --- x 即是 this --- 然後定義乙個變數的變數,意味著你把 x 的值作為新變數的名,在這個例子中,這個新變數的值是 is cake。用php來表現如下:

<?php

$x = 'this';

$$x = 'is cake';

?>

這個符號$$是在php中對變數的變數的表現方法。現在我們可以用兩種不同的方法來引用這兩個變數 $x 和 $$x 了。

<?php

echo '$x $';

?>

<?php

echo '$x $this';

?>

上面兩段程式都將輸出 this is cake。留心,在echo語句中$$x被寫成$,這是讓php知道你要輸出的是變數的變數而不是乙個$字元與$x變數。

你是不是仍很困惑?哦,也許吧,你想要一些更深進更有用的例子?下一節,我將向你展現怎樣用變數的變數在乙個頁面編纂多條記錄的。

例子假設你已有乙個mysql資料庫,保留了對一些感愛好的站點的鏈結,庫中有乙個表submissions,字段如下:

submissionid

postedby

link

description

approved

現在你想顯示在表中所有的已創立但沒有被認可的鏈結,這個編纂的頁面應可以更正一些輸進時的錯誤,並用適當的單選按鈕來為每乙個記錄設定是否答應(approved),然後一次把更新後的記錄都提交到表中。

首先,當你從資料庫出提取所有的記錄並顯示出來時,你必需為每乙個記錄設定乙個唯一的名字,這將讓我們在提交時可以迴圈地辯別出各個記錄的值。**如下:

<?php

//初始化變數的記數器

$index = 0;

$index_count = 0;

echo '<form method=post action=$php_self>n';

echo '<table>n';

echo '<tr><td><b>posted by</b></td><td><b>link</b></td>'.

'<td><b>description</b></td><td><b>approved</b></td></tr>n';

/*********

假定我們已從資料庫中檢索出記錄到乙個陣列中 

$myrow = mysql_fetch_array().

下面的 do...while 迴圈根據名字為每乙個$xstr變數分配了乙個值並且連線了$index 的值到結尾,以0為開端。

這樣,這個迴圈的第一次時,$submissionidstr 的值就是 submissionid0 ,第二次就是 submissionid1 ,以此類推。

PHP變數的變數

什麼叫作變數的變數?根據php手冊,變數的變數是指取得乙個變數的值並把它作為另乙個變數的變數名。這表述顯得相當的直接,容易和那些在乙個句子中使用 變數 這個詞弄混淆。給乙個簡單的例子,你定義乙個變數 x 等於 this 然後定義乙個變數的變數,意味著你把 x 的值作為新變數的名,在這個例子中,這個新...

php中自變數 PHP 變數

php 變數作用域 變數的作用域是指令碼中變數可被引用和使用的部分,php 中有四種不同的變數作用域 序號作用域 描述local 區域性作用域 global 全域性作用域 static 靜態作用域 parameter 函式引數作用域 1 local 本地的 區域性變數的作用域 在 php 函式內部宣...

PHP 的變數型別,變數檢測

變數的檢測 if isset b else isset 用於檢測變數是否設定,返回布林值,如果變數未被賦值或者賦值為 null 則返回false,反之則返回true 獲取變數型別 a 1 echo gettype a 判斷變數是否是想要型別 is int,is float,is array.a 23...