变量的变量,PHP和你

QQ1027920657

QQ1027920657

2016-01-29 13:44

变量的变量,PHP和你,变量的变量,PHP和你

在我最近做的一个项目中,我发现了一个新的概念,关于在PHP中使用变量的变量。在我的程序中,我需要在一个页面同时更新多个记录,在我经?嗟背な奔涞耐纯嗨妓髦?螅?院V信既坏厣料殖隽吮淞康谋淞浚?ariable 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_SELFn";
echo "<tablen";
echo "<tr<td<bPosted By</b</td<td<bLink</b</td".
"<td<bDescription</b</td<td<bApproved</b</td</trn";


/*********
假定我们已从数据库中检索出记录到一个数组中 
$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=-1Yes<input type=radio name=%s value=0 checkedNo</td</trn",
$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_countn";

echo "<INPUT TYPE=submit</formn";

?

提交以后,我们利用$index_count变量再一次循环遍历页面上所有的变量,然后,分配这些变量给另一些变量,这就用到了变量的变量

展开更多 50%)
分享

猜你喜欢

变量的变量,PHP和你

PHP
变量的变量,PHP和你

PHP学习之PHP变量

PHP
PHP学习之PHP变量

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

PHP中GET变量的使用

PHP
PHP中GET变量的使用

PHP中的超全局变量

Web开发
PHP中的超全局变量

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

php的变量引用 函数引用 对象引用

PHP
php的变量引用 函数引用 对象引用

标量变量和数组变量

编程语言 网络编程
标量变量和数组变量

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

PHP程序加速探索之缓存输出

PHP程序加速探索之缓存输出

《神魔大陆》新手成长全教程带你到40级

《神魔大陆》新手成长全教程带你到40级
下拉加载更多内容 ↓