[英]composed variable after Object Operator in PHP
How can I build a composed variable while creating a variable in PHP? 在PHP中创建变量时如何构建组合变量? (Sorry I'm not sure how to call the different elements)
(对不起,我不确定如何调用不同的元素)
This is what I'm trying to do: 这就是我想要做的:
$language = 'name_'.$this->session->userdata('site_lang');
for ($i=1;$i<=3;$i++) {
$data = $arraydata->$language_.$i; // problem is here
}
I would like $language_.$i
to be equivalent to name_english_1
, next loop name_english_2
... The same way I built $language
我希望
$language_.$i
等同于name_english_1
,下一个循环name_english_2
…与我建立$language
方式相同
If you want to use an expression in a computed property, you have to put the expression in braces. 如果要在计算属性中使用表达式,则必须将表达式放在花括号中。 Also, you need to put the underscore in quotes.
另外,您需要在下划线加上引号。
$data = $arraydata->{$language."_".$i};
However, I suggest you redesign your data structure. 但是,我建议您重新设计数据结构。 Instead of having separate
name_LANG_i
properties, make a single name
property whose value is a multi-dimensional array. 而不是使用单独的
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
}
Whenever you find yourself using variable variables or variable properties, it's almost always a sign that you should be using an array instead. 每当您发现自己使用变量变量或变量属性时,几乎总是表明您应该使用数组。
First construct the field name and then use it for accessing the field value from the object $arraydata
. 首先构造字段名称,然后将其用于从对象
$arraydata
访问字段值。 So your code should be like this: 因此,您的代码应如下所示:
$language = 'name_'.$this->session->userdata('site_lang');
for ($i = 1; $i <= 3; $i++) {
$var = "{$language}_{$i}";
$data = $arraydata->$var;
// echo $data;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.