六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

變量的變量,PHP與你

[摘要]在我最近做的一個項目中,我發現了一個新的概念,關于在PHP中使用變量的變量。在我的程序中,我需要在一個頁面同時更新多個記錄,在我經過相當長時間的痛苦思索之后,腦海中偶然地閃現出了變量的變量(vari...
在我最近做的一個項目中,我發現了一個新的概念,關于在PHP中使用變量的變量。在我的程序中,我需要在一個頁面同時更新多個記錄,在我經過相當長時間的痛苦思索之后,腦海中偶然地閃現出了變量的變量(variable variable)這一概念,所有的困惑就一掃而光了。

介紹

什么叫作變量的變量?根據PHP手冊,變量的變量是指取得一個變量的值并把它作為另一個變量的變量名。這表述顯得相當的直接,容易和那些在一個句子中使用“變量”這個詞弄混淆。給一個簡單的例子,你定義一個變量 --- x 等于 this --- 然后定義一個變量的變量,意味著你把 x 的值作為新變量的名,在這個例子中,這個新變量的值是 is cake。用PHP來表示如下:

<?php

$x = "this";
$$x = "is cake";

?>

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

<?php

echo "$x ${$x}";

?>

<?php

echo "$x $this";

?>

上面兩段程序都將輸出 this is cake。注意,在echo語句中$$x被寫成${$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 ,以此類推。
***********/

do {

$SubmissionIDStr = SubmissionID.$index;
$PostedByStr = PostedBy.$index;
$LinkStr = Link.$index;
$DescriptionStr = Description.$index;
$ApprovedStr = Aprroved.$index;


//這一段將在屏幕上顯示值,以每行一條記錄。

printf("<tr><td><input type=hidden name=%s value=%s><input type=text name=%s value=%s></td>
<td><input type=text name=%s value=%s></td><td><input type=text name=%s value=%s></td>
<td><input type=radio name=%s value=-1>Yes<input type=radio name=%s value=0 checked>No</td></tr>n",
$SubmissionIDStr, $myrow["SubmissionID"], $PostedByStr, $myrow["PostedBy"], $LinkStr, $myrow["Link"],
$DescriptionStr, $myrow["Description"], $ApprovedStr, $ApprovedStr);


//每個循環記數器加1

$index++;
$index_count++;

} while ($myrow = mysql_fetch_array($result));

// 創建一個索引記數器index_count來跟蹤所有的記錄數

echo "<INPUT TYPE=hidden NAME=counter VALUE=$index_count>n";

echo "<INPUT TYPE=submit></form>n";

?>

提交以后,我們利用$index_count變量再一次循環遍歷頁面上所有的變量,然后,分配這些變量給另一些變量,這就用到了變量的變量。

<?php

//這個循環遍歷所有頁面上顯示的記錄

for ($index = 0; $index <= $counter; $index++) {


/*****
這部分用我們在前面創建的名字設置了新的變量
從0開始,直到$index_count
*****/

$varSubmissionID = 'SubmissionID'.$index;
$varPostedBy = 'PostedBy'.$index;
$varLink = 'Link'.$index;
$varDescription = 'Description'.$index;
$varApproved = 'Approved'.$index;


/******
這是變量的變量部分,把每個值分配給每個新變量的名。
例如,第一次循環時,分配給記錄 SubmissionID0 是從前面得來的值,我們用變量的變量來了取到它。
*******/

$SubmissionIDvalue = $$varSubmissionID;
$PostedByvalue = $$varPostedBy;
$Linkvalue = $$varLink;
$Descriptionvalue = $$varDescription;
$Approvedvalue = $$varApproved;


//更新數據庫

$sql = "UPDATE submissions SET PostedBy='$PostedByvalue',Link='$Linkvalue',".
"Description='$Descriptionvalue' WHERE SubmissionID=$SubmissionIDvalue'";
$result = mysql_query($sql);


//如果本記錄被設置為approved,更新相應的字段 Approved。

if ($Approvedvalue == '-1') {
$sql = "UPDATE submissions SET Approved='-1' WHERE SubmissionID=$SubmissionIDvalue";
$result = mysql_query($sql);
}

}

?>

我希望這有助于你明白這個變量的變量的基本用法,并且在你將來的工作中使用它們提供一些思路。變量的變量這一概念,最初也是讓我頭痛的東西,但是一旦你知道了它們工作的基本原理時,它們就變成了一塊美味的比薩餅。


主站蜘蛛池模板: 天天影视色香欲综合网天天录日日录 | 亚洲国产精品久久卡一 | 欧美一级鲁丝片免费看 | 欧美一区色 | 亚洲精品成人久久久影院 | 日韩高清免费在线观看 | 人人揉人人人人澡人人 | 亚洲综合小说网 | 亚洲免费观看网站 | 天天射天天爱天天干 | 欧美一区二区激情视频 | 日韩a在线观看免费观看 | 一级做a爱片 | 亚洲网站免费观看 | 日韩欧美天堂 | 天天干夜夜夜操 | 亚洲久草视频 | 唐朝豪放女在线观看 | 亚洲国产高清视频 | 色天使久久综合网天天 | 亚洲小视频 | 午夜视频在线观看182tv | 在线亚洲日产一区二区 | 人人搞人人爱 | 日本大片免a费观看在线 | 婷婷 色天使 | 午夜视频在线观看免费观看在线观看 | 亚洲欧美手机在线观看 | 色欧美综合| 日韩美香港a一级毛片 | 全国男人的天堂网站 | 色狠狠色综合吹潮 | 五月婷婷视频在线观看 | 婷婷在线综合 | 四虎影永久在线高清免费 | 伊人网综合 | 色天使久久综合网天天 | 三级国产在线 | 日韩在线观看视频免费 | 我想看一级播放片一级的 | 天天拍拍夜夜出水 |