如何调用变量共享相同名称,但通过为这些数字分配一个变量来以不同的数字结尾



我找不到这个问题的更好标题。我有这样的变量: $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

最新更新