I know you can do: $hash('foo') and $$foo and also $bar[$foo], what are each of these things called?
1 Answer
$hash('foo')is a variable function.
$hashmay contain a string with the function name, or an anonymous function.$hash = 'md5'; // This means echo md5('foo'); // Output: acbd18db4cc2f85cedef654fccc4a4d8 echo $hash('foo');$$foois a variable variable.
$foomay contain a string with the variable name.$foo = 'bar'; $bar = 'baz'; // This means echo $bar; // Output: baz echo $$foo;$bar[$foo]is a variable array key.
$foomay contain anything that can be used as an array key, like a numeric index or an associative name.$bar = array('first' => 'A', 'second' => 'B', 'third' => 'C'); $foo = 'first'; // This tells PHP to look for the value of key 'first' // Output: A echo $bar[$foo];
The PHP manual has an article on variable variables, and an article on anonymous functions (but I didn't show an example above for the latter).
3 Comments
BoltClock
Variable array keys are pretty staple. I've included the PHP manual links for variable variables and variable functions.
NikiC
Things get really funny if you use the extended variable syntax. This allows stuff like
${'prefix_' . $name} or even funnier things like ${$var = 'var'} (this is 'var').ircmaxell
+1: "Variable function" calls can also be used on objects that declare an
__invoke magic method (Since PHP 5.3). So it can handle string function names, the return from create_function(), a Closure object (which is created when you use anonymous functions since 5.3) or a generic object which declares a __invoke method. It's too bad you can't use it on other callback types (array('classname', 'methodname'))...