简体   繁体   中英

composed variable after Object Operator in PHP

How can I build a composed variable while creating a variable in 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

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.

$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 . 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;

}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM