电脑安全

您当前的位置:主页 > 电脑安全 >

变量的变量,PHP和你-网络编程

来源:[db:来源]标题:   变量    编辑:电脑技术全能网 时间:2019-09-23 06:24

原标题:变量的变量,PHP和你-网络编程
   在我近来做的一个名目中,我发觉了一个新的观点,对于在PHP中应用变量的变量。在我的顺序中,我须要在一个页面同时更新多个记载,在我经由相称长时光的苦楚考虑以后,脑海中偶尔地出现出了变量的变量(variable variable)这一律念,全部的迷惑就一扫而光了。  先容  甚么叫作变量的变量?依据PHP手册,变量的变量是指获得一个变量的值并把它作为另一个变量的变量名。这表述显得相称的间接,轻易和那些在一个句子中应用“变量”这个词弄混杂。给一个简略的例子,你界说一个变量 --- x 即是 this --- 而后界说一个变量的变量,象征着你把 x 的值作为新变量的名,在这个例子中,这个新变量的值是 is cake。用PHP来表现以下:  <?php$x = "this";$$x = "is cake";?>  这个标记$$是在PHP中对变量的变量的表现方式。当初咱们能够用两种差别的方法来援用这两个变量 $x 和 $$x 了。  <?phpecho "$x ${$x}";?><?phpecho "$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";?>