Home Accessibility Courses Twitter The Mouth Facebook Resources Site Map About Us Contact
 
For 2023 (and 2024 ...) - we are now fully retired from IT training.
We have made many, many friends over 25 years of teaching about Python, Tcl, Perl, PHP, Lua, Java, C and C++ - and MySQL, Linux and Solaris/SunOS too. Our training notes are now very much out of date, but due to upward compatability most of our examples remain operational and even relevant ad you are welcome to make us if them "as seen" and at your own risk.

Lisa and I (Graham) now live in what was our training centre in Melksham - happy to meet with former delegates here - but do check ahead before coming round. We are far from inactive - rather, enjoying the times that we are retired but still healthy enough in mind and body to be active!

I am also active in many other area and still look after a lot of web sites - you can find an index ((here))
Static variables in PHP

When you call a function, you typically want a nice clean start with no "leftovers" from the previous call. And that's what you get by default in PHP. However, there can be exceptions where you want data to be retained and you can do that using:

EITHER a global variable which is shared with the main PHP script and retained throughout its run
OR a static variable which is retained by the function while your script is running, but is NOT shared with the main code.

The typical use of a static variable is in what we call an iterator - a function which steps through a series of results, generating the next value in the sequence each time it's called. Here is a code example:

<?php
$walrus = 77;
function nextmeal () {
   static $walrus = 0;
   $munch = array("fish","seagull","penguin","ice");
   $walrus++;
   $walrus %= count($munch);
   return $munch[$walrus];
   }
for ($k=0; $k<10; $k++) {
   print "What's for dinner - ".nextmeal()."?<br />";
   }
print $walrus; # Just to show you this is a different walrus!
?>


And here are the results:

What's for dinner - seagull?
What's for dinner - penguin?
What's for dinner - ice?
What's for dinner - fish?
What's for dinner - seagull?
What's for dinner - penguin?
What's for dinner - ice?
What's for dinner - fish?
What's for dinner - seagull?
What's for dinner - penguin?
77


You'll note that our Walrus gets a different meal each day, because the static variable $walrus within the nextmeal function is retained. But (just as a demonstration) the $walrus variable in the main code is set to 77 and remains at that value.

Full source code here and run it here. Further example [here]. Learn about it on a course run here.
(written 2007-10-05, updated 2010-12-31)

 
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
H105 - PHP - Functions
  [96] Variable Scope - (2004-10-22)
  [223] There is a function in PHP to do that - (2005-02-21)
  [308] Call by name v call by value - (2005-05-11)
  [339] Passing information into and out of PHP functions - (2005-06-07)
  [340] Code and code maintainance efficiency - (2005-06-08)
  [409] Functions and commands with dangerous names - (2005-08-11)
  [421] Don't repeat code - use loops or functions - (2005-08-21)
  [775] Do not duplicate your code - (2006-06-23)
  [866] A lazy programmer is a good programmer - (2006-09-15)
  [936] Global, Superglobal, Session variables - scope and persistance in PHP - (2006-11-21)
  [1021] PHP - static declaration - (2007-01-04)
  [1163] A better alternative to cutting and pasting code - (2007-04-26)
  [1202] Returning multiple values from a function (Perl, PHP, Python) - (2007-05-24)
  [1267] is there a lookup function in php? - (2007-07-15)
  [1357] Clean my plate, but keep my wine bottle. (PHP; Static) - (2007-09-18)
  [1784] Global - Tcl, PHP, Python - (2008-09-03)
  [2488] A variable number of arguments in a PHP function - (2009-11-02)
  [2630] Static variables and ampersands in PHP - (2010-02-10)
  [2682] Adding extensions to PHP Open Source applications - callbacks - (2010-03-17)
  [2737] Improving your function calls (APIs) - General and PHP - (2010-04-24)
  [2929] Passing a variable number of parameters in to a function / method - (2010-08-20)
  [3026] Coding efficiency - do not repeat yourself! - (2010-11-02)


Back to
Simple page password protection - PHP
Previous and next
or
Horse's mouth home
Forward to
Using a MySQL database to control mod_rewrite via PHP
Some other Articles
An email update for past guests and delegates
Monitoring mod_jk and how it is load balancing
First Great Western - information for customers
Using a MySQL database to control mod_rewrite via PHP
Static variables in PHP
Simple page password protection - PHP
Etag in http headers - what is it?
Load Balancing with Apache mod_jk (httpd/Tomcat)
Choosing between mod_proxy and mod_rewrite
Python v Ruby
4759 posts, page by page
Link to page ... 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96 at 50 posts per page


This is a page archived from The Horse's Mouth at http://www.wellho.net/horse/ - the diary and writings of Graham Ellis. Every attempt was made to provide current information at the time the page was written, but things do move forward in our business - new software releases, price changes, new techniques. Please check back via our main site for current courses, prices, versions, etc - any mention of a price in "The Horse's Mouth" cannot be taken as an offer to supply at that price.

Link to Ezine home page (for reading).
Link to Blogging home page (to add comments).

You can Add a comment or ranking to this page

© WELL HOUSE CONSULTANTS LTD., 2024: 48 Spa Road • Melksham, Wiltshire • United Kingdom • SN12 7NY
PH: 01144 1225 708225 • EMAIL: info@wellho.net • WEB: http://www.wellho.net • SKYPE: wellho

PAGE: http://www.wellho.net/mouth/1380_.html • PAGE BUILT: Sun Oct 11 16:07:41 2020 • BUILD SYSTEM: JelliaJamb