溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

PHP怎么動(dòng)態(tài)設(shè)置變量的名稱

發(fā)布時(shí)間:2021-08-14 18:37:36 來(lái)源:億速云 閱讀:199 作者:小新 欄目:編程語(yǔ)言

這篇文章主要介紹了PHP怎么動(dòng)態(tài)設(shè)置變量的名稱,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

示例:

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

可以看出,我們定義兩個(gè)變量$str$trans,首先輸出變量$str的值,然后使用可變變量來(lái)改變變量$str的名稱,輸出改變名稱后的變量值。看看輸出結(jié)果:

trans
hello!

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

所謂“可變變量”,就是一個(gè)變量以另外一個(gè)變量的值作為變量名。利用這一特性我們可以動(dòng)態(tài)的設(shè)置和使用一個(gè)變量的變量名。例如,我們可以設(shè)置$tireqty的值:

$varname = 'tireqty';

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

varname = 5;

這個(gè)代碼等價(jià)于:

$tireqty = 5;

而聲明可變變量的方法非常簡(jiǎn)單,只需要在變量名前加上至少兩個(gè)“$”符號(hào)即可。

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

輸出結(jié)果:

hello!

利用可變變量可以動(dòng)態(tài)設(shè)置變量名稱的特性,我們可以將可變變量應(yīng)用在表單處理中

在使用表單獲取數(shù)據(jù)時(shí),往往不會(huì)只有一個(gè)數(shù)據(jù)

<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>

因此處理表單數(shù)據(jù)時(shí),也不會(huì)只有一個(gè)表單變量。而傳統(tǒng)的中規(guī)中矩的寫法是下面這樣的,表單變量越多,賦值語(yǔ)句將會(huì)很長(zhǎng)。

<?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;
?>

我們利用可變變量來(lái)優(yōu)化,使用一個(gè)循環(huán)語(yǔ)句和一個(gè)變量來(lái)自動(dòng)處理它們

<?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;
?>

代碼是不是簡(jiǎn)潔了不少!

可變變量也可以用于數(shù)組。

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

輸出結(jié)果:

hello
world

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

因?yàn)椋绻銓懴?$$a[1] 時(shí),解析器需要知道你是想要 $a[1] 作為一個(gè)變量呢,還是想要把$$a當(dāng)成變量、[1]指的是這個(gè)變量的索引。

解決這個(gè)問題的語(yǔ)法是使用“{ }”將變量包裹,對(duì)應(yīng)的語(yǔ)法是:第一種情況使用${$a[1]},第二種情況使用${$a}[1]。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“PHP怎么動(dòng)態(tài)設(shè)置變量的名稱”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

php
AI