PHP에서 변수 이름을 동적으로 설정하는 방법

青灯夜游
풀어 주다: 2023-03-11 22:52:01
원래의
1815명이 탐색했습니다.

在上一篇文章中我们简单了解了什么是变量,变量的声明,介绍了变量赋值的两种方式,有需要的可以点击链接查看→《你知道php变量有哪些设置值的方式吗》。这次我们继续来聊聊变量,介绍一下如果动态的设置(改变)一个变量的名称。

我们一般操作变量,都是改变变量的值(这是所有的语言都支持的),有时会改变一下变量的类型;但很少(几乎没有)进行改变变量名称的操作的(支持这一操作的语言也很少)。但在PHP中可以,它提供了一个特殊的其他类型的变量——可变变量,可以允许我们动态的设置(修改)一个变量的名称。

我们来看看下面这个示例:

<?php
$str=&#39;trans&#39;;                                                  //声明变量$str
$trans=&#39;hello!&#39;;                                            //声明变量$trans
echo $str;                                                     //输出变量$str
echo "<br/>";
echo $$str;                                                 //通过可变变量输出$trans的值
?>
로그인 후 복사

可以看出,我们定义两个变量$str$trans,首先输出变量$str的值,然后使用可变变量来改变变量$str的名称,输出改变名称后的变量值。看看输出结果:

trans
hello!
로그인 후 복사

那么具体什么是可变变量呢?

所谓“可变变量”,就是一个变量以另外一个变量的值作为变量名。利用这一特性我们可以动态的设置和使用一个变量的变量名。例如,我们可以设置$tireqty的值:

$varname = &#39;tireqty&#39;;
로그인 후 복사

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

varname = 5;
로그인 후 복사

这个代码等价于:

$tireqty = 5;
로그인 후 복사

而声明可变变量的方法非常简单,只需要在变量名前加上至少两个“$”符号即可。

<?php
$demo = &#39;string&#39;;
$$demo = &#39;hello!&#39;;
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[&#39;oilqty&#39;];
$tireqty = $_POST[&#39;tireqty&#39;];
$sparkqty = $_POST[&#39;sparkqty&#39;];
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 = &#39;hello&#39;;
$test = &#39;world&#39;;
$arr = array(&#39;demo&#39;, &#39;test&#39;);
echo ${$arr[0]}.&#39;<br>&#39;.${$arr[1]}.&#39;<br>&#39;;
?>
로그인 후 복사

输出结果:

hello
world
로그인 후 복사

分析:${$arr[0]}${$arr[1]}为什么中间要用“{ }”将数组变量包裹住呢?

因为,如果你写下 $$a[1] 时,解析器需要知道你是想要 $a[1] 作为一个变量呢,还是想要把$$a当成变量、[1]指的是这个变量的索引。

解决这个问题的语法是使用“{ }”将变量包裹,对应的语法是:第一种情况使用${$a[1]},第二种情况使用${$a}[1]

好了就说到这里了,有其他想知道的,可以点击这个哦。→ →php视频教程

最后给大家推荐一个PHP数组的免费视频教程:从0开始进入PHP的世界,快来学习吧!

위 내용은 PHP에서 변수 이름을 동적으로 설정하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
php
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿