Variable Variables and Variable Functions in PHP

Variable Variables and Function Variables in PHP

PHP variable variables are almost never used because they greatly obfuscate any application
that you’re trying to write and can very easily inject a number of bugs into a script.
That being said, this interesting little feature just may be on the Zend PHP Certification Exam.

Variable variables use a variable as the name of another variable.
You may think that these are kind of like a pointer in other languages and I guess they are
except you can’t do any of the fun pointer arithmetic. Here’s a simple example of using the
value of another variable for a variable’s name.

  1.  
  2. $name = ’foo’;
  3. $$name = ’bar’;
  4. echo $foo;
  5. // Displays ’bar’
  6.  

This could also be used to have a number as a variable name (which normally isn’t allowed):

  1.  
  2. $name = ’123’;
  3. $$name = ’456’;
  4. echo ${123};
  5.  

While on the topic of PHP pointer like stuff, it is also possible to use a variable as a function pointer
like in the following example.

  1.  
  2. function myFunc() {
  3.         echo ’myFunc!’;
  4. }
  5. $f = ’myFunc’;
  6. $f(); // will call myFunc();
  7.  

I don’t think I’ll be using any of these features in my applications any time soon but hopefully I
won’t be clueless when taking the Zend PHP Certification Exam to become a Certified Zend Engineer.

Print, Echo, and Deprecated PHP Tags

One of the first unavoidable first steps of writing php is outputting to the screen using echo or print. These simple functions are invaluable to every script that I’ve ever written and I’m sure they will be all over the Zend PHP certification exam.

Turns out that in most cases, using the echo function instead of the print function is a bit faster. Usually this won’t really make any difference in your day to day code but it’s interesting nonetheless. It’s faster because it doesn’t return a value.

The print function is good when you need to use it as a function, for example:

  1. while(print("this will return stuff"))
  2. {
  3.     // Important PHP code here.
  4. }

Another basic element is the PHP script tags. I’ve really only ever used the normal tags but I’ve always known about the others. Turns out that they are all slowly being phased out.
Short tags, script tags and ASP tags are all considered deprecated and their use is strongly discouraged. Here’s an example of each type of tag that you shouldn’t be using:

  1. //Short Tags:
  2. <?
  3. code
  4. ?>
  5. <?= $variable ?>
  6.  
  7. //Script Tags:
  8. <script language=“php”>
  9. code
  10. </script>
  11.  
  12. //ASP Tags:
  13. <%
  14. code
  15. %>

Lastly I came across this odd little statement:

  1. echo (int) ((0.1 + 0.7)*10);

This will echo 7. Whaaa?

This happens because the result of this simple arithmetic expression is stored internally as 7.999999 instead of 8; when the value is converted to int, PHP simply truncates away the fractional part, resulting in a rather significant error (12.5%, to be exact).

I’ve read that the Zend exam likes to use odd little questions like this to try and trip up developers. Hopefully knowing how this works will help me on my way to becoming a Zend Certified Engineer.