站長資訊網
        最全最豐富的資訊網站

        PHP如何動態設置變量的名稱

        在上一篇文章中我們簡單了解了什么是變量,變量的聲明,介紹了變量賦值的兩種方式,有需要的可以點擊鏈接查看→《你知道php變量有哪些設置值的方式嗎》。這次我們繼續來聊聊變量,介紹一下如果動態的設置(改變)一個變量的名稱。

        我們一般操作變量,都是改變變量的值(這是所有的語言都支持的),有時會改變一下變量的類型;但很少(幾乎沒有)進行改變變量名稱的操作的(支持這一操作的語言也很少)。但在PHP中可以,它提供了一個特殊的其他類型的變量——可變變量,可以允許我們動態的設置(修改)一個變量的名稱。

        我們來看看下面這個示例:

        <?php $str='trans';                                                  //聲明變量$str $trans='hello!';                                            //聲明變量$trans echo $str;                                                     //輸出變量$str echo "<br/>"; echo $$str;                                                 //通過可變變量輸出$trans的值 ?>

        可以看出,我們定義兩個變量$str$trans,首先輸出變量$str的值,然后使用可變變量來改變變量$str的名稱,輸出改變名稱后的變量值。看看輸出結果:

        trans hello!

        那么具體什么是可變變量呢?

        所謂“可變變量”,就是一個變量以另外一個變量的值作為變量名。利用這一特性我們可以動態的設置和使用一個變量的變量名。例如,我們可以設置$tireqty的值:

        $varname = 'tireqty';

        于是,我們就可以用varname取代$tireqty。例如,我們可以設置$tireqty的值:

        varname = 5;

        這個代碼等價于:

        $tireqty = 5;

        而聲明可變變量的方法非常簡單,只需要在變量名前加上至少兩個“$”符號即可。

        <?php $demo = 'string'; $$demo = 'hello!'; echo $string; ?>

        輸出結果:

        hello!

        利用可變變量可以動態設置變量名稱的特性,我們可以將可變變量應用在表單處理中

        在使用表單獲取數據時,往往不會只有一個數據

        <form action="test.php" method="post"> <table border="0"> <tr bgcolor="#cccccc"> <td width="150">Item</td> <td width="15">Quantity</td> </tr> <tr> <td>Tires</td> <td align="center"><input type="text" name="tireqty" size="3" maxlength="3" /></td> </tr> <tr> <td>Oil</td> <td align="center"><input type="text" name="oilqty" size="3" maxlength="3" /></td> </tr> <tr> <td>Spark Plugs</td> <td align="center"><input type="text" name="sparkqty" size="3" maxlength="3" /></td> </tr> <tr> <td colspan="2" align="center"><input type="submit" value="Submit Order" /></td> </tr> </table> </form>

        因此處理表單數據時,也不會只有一個表單變量。而傳統的中規中矩的寫法是下面這樣的,表單變量越多,賦值語句將會很長。

        <?php $oilqty = $_POST['oilqty']; $tireqty = $_POST['tireqty']; $sparkqty = $_POST['sparkqty']; echo "<p>Your order is as follows:</p>"; echo "<br />$oilqty=".$oilqty; echo "<br />$tireqty=".$tireqty; echo "<br />$sparkqty=".$sparkqty; ?>

        我們利用可變變量來優化,使用一個循環語句和一個變量來自動處理它們

        <?php foreach ($_POST as $key => $value) { $$key = $value; } echo "<p>Your order is as follows:</p>"; echo "<br />$oilqty=".$oilqty; echo "<br />$tireqty=".$tireqty; echo "<br />$sparkqty=".$sparkqty; ?>

        代碼是不是簡潔了不少!

        可變變量也可以用于數組。

        <?php $demo = 'hello'; $test = 'world'; $arr = array('demo', 'test'); echo ${$arr[0]}.'<br>'.${$arr[1]}.'<br>'; ?>

        輸出結果:

        hello world

        分析:${$arr[0]}${$arr[1]}為什么中間要用“{ }”將數組變量包裹住呢?

        因為,如果你寫下 $$a[1] 時,解析器需要知道你是想要 $a[1] 作為一個變量呢,還是想要把$$a當成變量、[1]指的是這個變量的索引。

        解決這個問題的語法是使用“{ }”將變量包裹,對應的語法是:第一種情況使用${$a[1]},第二種情況使用${$a}[1]

        好了就說到這里了,有其他想知道的,可以點擊這個哦。→ →php視頻教程

        最后給大家推薦一個PHP數組的免費視頻教程:從0開始進入PHP的世界,快來學習吧!

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 亚洲精品无码精品mV在线观看| 国产精品合集一区二区三区| 精品熟女少妇a∨免费久久| 久久九九亚洲精品| 色久综合网精品一区二区| 久热这里只有精品99国产6| 欧美精品第一页| 69久久精品无码一区二区| 无码人妻精品一区二区三区夜夜嗨 | 少妇人妻偷人精品视频| 久久精品中文字幕一区| 国产精品白丝AV嫩草影院| 久久国产精品-国产精品| 精品午夜福利在线观看| 亚洲国产一成人久久精品| 香蕉99久久国产综合精品宅男自 | 久草视频精品在线| 99热这里只有精品国产66| 精品四虎免费观看国产高清午夜| 国产精品jizz视频| 精品乱码久久久久久久| 亚洲AV无码成人精品区天堂| 亚洲AV无码久久精品蜜桃| 亚洲中文精品久久久久久不卡| 无码人妻精品一区二区蜜桃百度| 欧美精品国产一区二区三区| 久久精品一区二区三区中文字幕| 久久成人精品| 免费精品国自产拍在线播放| 亚洲精品成人网久久久久久| 亚洲国产精品一区二区第四页 | 青青热久久国产久精品| 欧美亚洲日本久久精品| 日韩精品国产自在欧美| 天天爽夜夜爽8888视频精品| 久久精品无码免费不卡| 日韩经典精品无码一区| 亚洲午夜国产精品无码老牛影视| 日产精品一线二线三线芒果| 精品欧洲AV无码一区二区男男| 国产精品久久久久jk制服|