我找不到这个问题的更好标题。我有这样的变量: $var1
, $var2
, $var3
。
在for
循环中,我想显示以下变量:
for ( $j = 1; $j <= 3; $j++ ) {
echo $var$j;
}
当然这是行不通的,但是语法是什么?如果$var1
= 1,$var2
= 2和$var3
= 3,我想要此结果:" 123"。
这是解决问题的方法:
如何在内部放置一个值:
// $content is an array of values.
for ( $j = 1; $j <= 3; $j++ ) {
$var_name = "var".$j;
$$var_name = $content[$j];
}
以及如何阅读它们:
for ( $j = 1; $j <= 3; $j++ ) {
$var_name = "var".$j;
echo $$var_name;
}
,但我建议使用数组:
// $content is an array of values.
foreach ( $content as $key=>$value) {
echo $content[$key];
echo $value; //same as previous line
unset($content[$key]);//to remove a value from an array
}
使用卷曲支撑语法(称为变量变量):
for ( $j = 1; $j <= 3; $j++ ) {
echo ${"var$j"};
}
另外,如 @alnitak 评论中提到的:
如果您正在使用数字来处理这样的变量,则首先应该使用数组。
因此,array
绝对是一个选项,因为它可能是用法的确切情况。
如果可以,请切换到使用数组而不是这些变量。如果不能,您仍然可以使用一个数组:
foreach (array($var1, $var2, $var3) as $current) {
echo $current;
}
我认为应该使用数组而不是许多不必要的变量。保持事物结构化,就像这里所拥有的完全是数据结构。一个人可能会使用空的值爆炸/加入它们:
$values = [1,2,3];
echo join('', $values);
那样简单!想想!
出于可移植性的目的,可能在某些情况下使用关联数组,假设何时从数据库行列中获取数据时。从PHP开始,只能提取数组值,可以使用:
$values = [
'value1' => 1,
'value2' => 2,
'value3' => 3
];
echo join('', array_values($values));
,最后,考虑到先前的关联概念,也可以使用对象属性:
$obj = new stdClass();
$obj->value1 = 1;
$obj->value2 = 2;
$obj->value3 = 3;
echo join('', array_values(get_object_vars($obj)));
这将对您有用:
$var1 = "1";
$var2= "2";
$var3 = "3";
for ( $j = 1; $j <= 3; $j++ ) {
echo ${"var".$j};
}
,输出将为
123
语法是
${"firstPart".$lastPart};
等于
$firstPartlastPart
您可以在这里阅读更多信息:http://www.php.net/manual/enual/en/language.variables.variable.variable.php