I tried to access with $this->$arrDataName[$key] on the element with the key $key from the array $this->$arrDataName. But PHP interpretes that wrong.
I tried it with { } around the $arrDataName to $this->{$arrDataName}[$key], but it doesn't work.
On php.net I found an advice, but I can't realize it.
In order to use variable variables with arrays, you have to resolve an ambiguity problem. That is, if you write $$a[1] then the parser needs to know if you meant to use $a[1] as a variable, or if you wanted $$a as the variable and then the [1] index from that variable. The syntax for resolving this ambiguity is: ${$a[1]} for the first case and ${$a}[1] for the second.
Perhaps anyone can help me.
Thanks!
EDIT:
I think it doesn't work, but I forgot to fill the array.
Finally it works. :)
This is the solution: $this->{$arrDataName}[$key]
Your syntax is correct:
$this->{$varName}[$key]
You can also use an extra variable for this:
$myTempArr = $this->$arrDataName;
$myTempArr[ $key ];
IMHO, readability is better that way...
<?php
    class Foo {
        public function __construct() {
            $this->myArray = array('FooBar');
            $arrayName = 'myArray';
            echo $this->{$arrayName}[0];
        }
    }
    new Foo;
This worked perfectly for me, it printed FooBar.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With