# PHP Constant Arrays?

1. Dec 21, 2009

### John Creighto

I was wondering if was possible to create a constant array in php so it doesn't have to be reinitialized each time you enter a function. I guess one solution is to make it global but from a code maintenance perspective it makes since to put the array in with the function that uses it.

2. Dec 22, 2009

### CompuChip

If I understand your question correctly, you might be looking for a static variable.
I used it myself in the following two constructions (incidentally, from the same file, so I'll post them both):

PHP:

function connect_db() {
static $theDatabase = null; if(!$theDatabase) {
global $databaseProperties; include("database.php");$theDatabase = new db($databaseProperties['dbname'],$databaseProperties['host'], $databaseProperties['user'],$databaseProperties['password'], $databaseProperties['persist']); } return$theDatabase;
}

function getLanguageList() {
static $languageList = null; global$db;
if($languageList === null) { if(!$db) $db = connect_db();$languageList = $db->q("column SHOW COLUMNS FROM TranslatedStrings"); } return$languageList;
}

In both functions, the static variable only exists within the function, but not outside it. The value is kept between calls however. For example, I can call connect_db() as much as I like. The first time, it will create a new database handle, store it in the static variable and give it to me. However, every next time I call the function, it will see that the variable has already been assigned and will just return the value.

The second example is more similar to your question, that's why I included it. The first time, an array is initialized with some values from a database, a relatively slow operation. After that however, the function basically does nothing but "return $languageList;" where$languageList has the value from the first call.