在PHP中的Object Operator之后组成变量

时间:2016-04-29 20:56:55

标签: php variables

如何在PHP中创建变量时构建组合变量? (对不起,我不确定如何调用不同的元素)

这就是我想要做的事情:

$language = 'name_'.$this->session->userdata('site_lang');

for ($i=1;$i<=3;$i++) {
    $data = $arraydata->$language_.$i; // problem is here
}

我希望$language_.$i等同于name_english_1,下一个循环name_english_2 ...与我构建$language的方式相同

2 个答案:

答案 0 :(得分:2)

如果要在计算属性中使用表达式,则必须将表达式放在大括号中。此外,您需要将下划线放在引号中。

$data = $arraydata->{$language."_".$i};

但是,我建议您重新设计数据结构。不要使用单独的name_LANG_i属性,而是创建一个name属性,其值为多维数组。

$lang = $this->session->userdata('site_lang');

for ($i=1;$i<=3;$i++) {
    $data = $arraydata->name[$lang][$i];
    // do something with $data
}

每当您发现自己使用变量或变量属性时,几乎总是表明您应该使用数组。

答案 1 :(得分:0)

首先构造字段名称,然后使用它来访问对象$arraydata中的字段值。所以你的代码应该是这样的:

$language = 'name_'.$this->session->userdata('site_lang');
for ($i = 1; $i <= 3; $i++) {
    $var = "{$language}_{$i}";
    $data = $arraydata->$var;

    // echo $data;

}