HTML Version

PHP Reference: Beginner to Intermediate PHP5

Mario Lurig

PHP Reference:

2008 Beginner to Intermediate PHP5

ISBN: 978-1-4357-1590-5
Creative Commons Attribution-NonCommercial-ShareAlike 2.0
You are free:
to Share — to copy, distribute and transmit the work
to Remix — to adapt the work
Under the following conditions:

Attribution. You must attribute the work in the manner specified by the
author or licensor (but not in any way that suggests that they endorse you or
your use of the work).

Noncommercial. You may not use this work for commercial purposes.

Share Alike. If you alter, transform, or build upon this work, you may
distribute the resulting work only under the same or similar license to this

For any reuse or distribution, you must make clear to others the license
terms of this work.
Any of the above conditions can be waived if you get permission from the
copyright holder.
Nothing in this license impairs or restricts the author’s moral rights.

Cover art credit (PHP REFERENCE:), included with permission:

  • Leo Reynolds ( ) – 7 images
  • Patrick Goor ( ) – 3 images
  • Eva the Weaver ( ) – 2 images
  • Duncan Cumming ( ) – 1 image



I taught myself PHP and MySQL and found myself, at times,
without internet access and thus without search access to the
manual ( ). Since coding was not my
primary job, I needed a refresher on syntax, usage, and most of all, a
reminder of how to code PHP without spending an hour debugging a silly
mistake. I printed out reference sheets, cards, cheat sheets and tried to work
off of them exclusively. However, I still found myself needing more than
would fit on one page of 8.5″ x 11″ paper front and back. So, off I went to the
web and the local bookstore. After spending some time with a few books,
giving them a trial run, I ran into two major problems:

  1. I spent most of the time weeding through extensive tutorials to find
    the keyword and answer I was looking for, sometimes fruitlessly.
  2. Information was biased or surrounded by irrelevant and often

confusing code that did little to explain thewhat of the function.

I figured I couldn’t be the only one with this problem, and quickly
found out that I wasn’t alone thanks to a chance run-in at a local bookstore.
Casual PHP programmers, sometimes away from the internet, wanting a
quick reference book that assumes they have some experience with PHP and
understood the basics while still needing a little clarification sometimes on
the details. Therefore, this book was born.

For this edition, I decided to eliminate some of the more advanced
aspects of PHP programming: object oriented programming, image
manipulation/creation, secondary modules, and a few others. Secondarily,
items such as mail handling, file manipulation, regular expressions, MySQL,
sessions, and cookies were balanced for complexity and usability, usually
excluding the more advanced uses, such as streams . Finally, this book is not
an exhaustive collection of every PHP function, but a majority selection of
those appropriate for beginner to intermediate programmers. The most
common or effective functions are included and some aliases are left out to
reduce confusion, such as including is_int() and not is_long().

A few bits of nomenclature should be addressed and provided, to
better understand the word/code used inside this book. In other words, here
are some assumptions made inside this book that you should understand:

– An expression (e.g. $x == 1), including boolean
$variable – A string, integer,float, array orboolean1
$scalar – Astring,integer, float, or boolean
$string – A string variable or its equivalent (e.g. “string” or ‘string’ )
$array – Anarray variable or its equivalent (e.g. array( ‘one’ , ‘two’ , ‘three’ ) )
key – Represents the key (integer orstring) of anarray (e.g. $array[key] )
value – In relation to an array, represents the $variable value (e.g.
array( ‘value ‘) )

This book also shows all code using procedural PHP and standard
syntax. However, you will find many tips will include the alternative syntax
for control structures as to better allow you, the reader, to choose whichever
you would prefer. Here is an example of both:

// Standard syntax
if ($x == 1) {
echo ‘Hello World!’;
} else {
echo ‘Goodbye World!’;
// Alternative syntax
if ($x == 1):
echo ‘Hello World!’;
echo ‘Goodbye World!’;

Furthermore, the use of whitespace and indenting is for clarity and is
completely up to your preference. Styles vary greatly in the community, so
please be aware that the use of spaces or whitespace does not directly affect
the PHP code.

The majority of the book is a collection of functions, their
descriptions, example code, maybe an extra tip, and some related functions
that may be of interest. All sample code will be accompanied by the sample
output, and the output will have a gray background. Thedefinition and
example section is separated from the extraneoustip section by the use of
three black clovers, centered on the line. It is meant as a simple visual clue to
keep one from getting distracted or lost and confusing the next bit of
information as required reading. All functions will be presented using the
following formatting:

1 Boolean is usually used within an expression. While it is also evaluated as a variable, output
results may vary and are noted within specific functions whenever possible

function name(input, [optional input])

Code with // comments
Output of code as seen through a web browser’s output

See Also:

function – simplified and relevant definition
function – simplified and relevant definition

{Optional Section} Tip to help with usage or trick on using it
Extra code
related to the tip

[0] => Of
[1] => Code

Thanks, and enjoy the show!

Miscellaneous Things You Should Know

Not everything fits into a neat little category, nor does everything in
PHP belong in this reference book. However, sometimes they deserve a
quick note and a little attention and shall be included here.

PHP Code
For portability and compatibility, always use the long form.

Long form:

Short form:

Short form equivalent of echoexpr ?>
Note:No closing semicolon (;) is required.

Semicolon ( ; )

All statements must end in a semicolon ( ; )! Otherwise, errors will be
generated. If the error doesn’t make sense, you probably are missing a
semicolon somewhere!


‘ ‘ (single quotes) – Content inside single quotes is evaluated literally.
Therefore, $string actually means: (dollar sign)string, and does not represent
the variable’s value.

$string = ‘Single Quotes’;
echo ‘$string’;

” ” (double quotes) – Variables inside double quotes are evaluated for their
$string = ‘Double Quotes’;
echo “$string”;
Double Quotes

Backslash (Escape Character)
Escapes characters that should be evaluated literally when inside double
$string = ‘Double Quotes’;
echo “\$string is set as $string”;
$string is set as Double Quotes

Special Characters

backslash ( \ )
question mark ( ? )
single ( ‘ ) quotes
double ( ” ) quotes
dollar sign ( $ )

$string = ‘Hello World!’;
echo “The variable \$string contains \’ $string \’ \” \\”;

The variable $string contains \’ Hello World! \’ ” \
echo ‘The variable \$string contains \’ $string \’ \” \\’;
The variable \$string contains ‘ $string ‘ \” \

Single line, for everything to the right of the doubleforward slashes:
// This is a comment

Multiple lines, opening and closing tags:

/* This is
a comment */

Formatting Characters

– New line
\r – Carriage return
\t – Tab
\b – Backspace

define(name,value [, $boolean])

– $string
value – $scalar
$boolean – [optional]default: FALSE, case-sensitive

Define a constant, a set value that is assigned globally, making it available to
functions and classes without passing them directly as an argument.
define(‘HELLO’, ‘Hello World!’);
echo HELLO;
Hello World!

define(‘GREETINGS’, ‘Hello World!’, TRUE);
echo greetings;

Hello World!Hello World!

function functionname([arguments]) { }
Functions can be placed anywhere in a page and will be available even if
called above the actual function being created. The exception to this rule is if
the function is only defined as part of a conditional statement, and is not
available to be called until that conditional statement has been evaluated.

// Above the conditional statement, this will cause an error

if (0==0){
function hello(){
echo ‘Hello!’;

Fatal error: Call to undefined function hello()
if (0==0){
function hello(){

echo ‘Hello ‘;
function there(){

echo ‘there’;
Hello there

Functions can have no arguments (as above), arguments passed to them, or
default arguments with passed arguments as optional. The argument names
are used within that function as variable names.

function args($a, $b){
// Has no default values, requires two inputs
echo “a = $a, b = $b”;


a = 1, b = 2
Some examples using the following function:

function args($a = 1, $b = 2){
// Has default values set
$c = $a + $b;
echo “a = $a, b = $b, a+b = $c”;


a = 1, b = 2, a+b = 3
a = 5, b = 5, a+b = 10
a = 10, b = 2, a+b = 12
args($DoesNotExist,20); // Do not do this, send (NULL,20) instead
a = , b = 20, a+b = 20

Functions can also return a $variable (including an array):

function Add($one,$two){
$total = $one + $two;
return $total;

$a = 2;
$b = 3;
$result = Add($a,$b); // Assigns the value of $total to $result
echo $result;


If multiple pages will refer to the same functions, create a separate
functions.php file (name it whatever you like) and require() or
require_once() with pages that will need to use those functions. For speed
and file size, page specific functions should be included directly on the
necessary page.


Stops the current script and outputs the optional

$result = @mysql_connect(‘db’, ‘user’, ‘pw’)
or die(‘Unable to connect to database!’);
echo ‘If it fails, this will never be seen’;

Unable to connect to database!
Note: The above output would only display if it failed. If the @ was not present
before mysql_connect(), PHP would output a warning as well.


Evaluates a string as if it was code. This can be used to store code in a
database and have it processed dynamically by PHP as if it were part of the
page. All appropriate aspects of code must be included, such as escaping
items with a backslash (\) and including a semicolon (;) at the end of the


$name = ‘Mario’;
$string = ‘My name is $name.’; // Note the single quotes
echo $string;
$code = “\$evalstring = \” $string \” ;”;
// Effect of backslash escape: $code = “$evalstring = ” $string ” ;”;
eval($code); // eval($evalstring = ” My name is $name ” ;);
// $evalstring is the same as $string, except with double quotes now
echo $evalstring;

My name is $name. My name is Mario.

Pauses PHP for $integer amount of seconds before continuing.
sleep(2); // pause for 2 seconds

Pauses PHP for $integer amount of microseconds before continuing.
usleep(1000000); // pause for 1 second

uniqid([$scalar [,

entropy – [optional] $booleandefault: FALSE, 13 character output

Generate a unique ID based on the
$scalar. If no input is given, the current
time in microseconds is used automatically. This is best used in combination
with other functions to generate a more unique value. If the $scalar is an
empty string (”) andentropy is set to TRUE, a 26 character output is provided
instead of a 13 character output.

$id = uniqid();
echo $id;
$random_id = uniqid(mt_rand());
echo $random_id;
$md5 = md5($random_id);
echo $md5;

See Also:
md5() – MD5 algorithm based encryption

setcookie(name [,value] [,time] [,path] [,domain] [,secure] [,httponly])

– $string
value – [optional] $string
time – [optional] $integerdefault: till the end of the session
path – [optional] $stringdefault: current directory
domain – [optional] $stringdefault: current domain (e.g.
secure – [optional] $booleandefault: FALSE, does not require a secure
httponly – [optional] $booleandefault: FALSE, available to scripting
Sets a cookie2, visible to the server on the next page load. To send then
default value, use a set of single quotes (”) for each argument you want to
skip except thetime argument, which should use 0 to send thedefault value.
In most cases, providing thename, value, time, anddomain will cover most
uses (with ” forpath).


setcookie(‘Cookie’,’Set till end of this session’,0);
// This will display properly after the page has been reloaded

Array ( [Cookie] => Set till end of this session )

setcookie(‘Cookie’,’Set for 60 seconds for all subdomains of, such as www., mail., etc.’,time()+60,”,’’);

Array ( [Cookie] => Set for 60 seconds for all subdomains of, such as www., mail., etc. )

Some common times used for expiration:
time()+60*60*24 is equal to 1 day
time()+60*60*24*30 is equal to 30 days
time()-1 is one second in the past, used to expire/delete a cookie

// expires the Cookie named ‘Cookie’. Note the empty string for value

Changes the formatting of $string to the proper format for passing through a
URL, such as part of a GET query, returning the new string.
$string = ‘Hello There! How are you?’;
echo urlencode($string);

Changes the formatting of $string from the URL compatible (such as a GET
query) format to human readable format, returning the new string.
$string = ‘Hello+There%21+How+are+you%3F’;
echo urldecode($string);
Hello There! How are you?

2 Must be sent prior to any headers or anything else is sent to the page (including the
tag). See ob_start() for an easy way to make this work


0 if it is off, 1 otherwise.
Used to determine if magic quotes is on. This check is used for code
portability and determining if the addition of backslashes is necessary for
security purposes and preventing SQL injection. Magic_quotes_gpc
processes GET/POST/Cookie data and, if turned on, automatically processes
the above data every time withaddslashes().

if (get_magic_quotes_gpc()){
echo ‘Magic Quotes is on!’;
echo ‘Magic Quotes is NOT on, use addslashes()!’;
// This is the default setting for PHP5 installations
Magic Quotes is NOT on, use addslashes()!

See Also:

addslashes() –
Add backslashes to certain special characters in a string
stripslashes() – Remove backslashes from certain special characters in a

option – [optional] Used with a specific $integer or$string to display only a
portion of phpinfo().Specific options excluded for simplicity.
By default, phpinfo() will display everything about the PHP installation,
including the modules, version, variables, etc.

Display All PHP Errors and Warnings

To catch programming errors, mistakes, or make sure that PHP is not
making any assumptions about your code, troubleshooting is best done with
all PHP errors being displayed. The following two lines of code will enable
this mode:

ini_set(‘display_errors’, ‘1’);

mail(to,subject,message [,headers] [,parameters])

– $string
subject – $string
message – $string
headers – [optional] $string
parameters – [optional] $string

This uses the sendmail binary which may not be configured or available
depending on your system/setup.This is included here for basic reference. The
configuration and security concerns are outside of the scope of this book.
Security consideration:


$to = ‘’;
$subject = ‘Hello’;
$message = ‘Hi John Doe’;
$headers = ‘From:’ . “\r\n” .

‘Reply-To:’ . “\r\n” .
‘X-Mailer: PHP/’ . phpversion();
mail($to, $subject, $message, $headers);

exec(command [,output] [,return])
command – $string to execute the external program
output – [optional] Variable name to assign all the output of thecommand as
an array
return – [optional] Variable name to assign the return status as an$integer.
Works only whenoutput is also present.

The function will return the last line of the executed program’s output. If the
program fails to run and bothoutput andreturn are both present,return will
be most commonly set to 0 when successfully executed and 127 when the
command fails.

Example (Linux specific program):

$lastline = exec(‘cal’, $output, $return);
echo ‘

’; // For better formatting of print_r()
var_dump($lastline, $return);

[0] =>
March 2008
[1] => Su Mo Tu We Th Fr Sa
[2] =>
[3] => 2 3 4 5 6 7 8
[4] => 9 10 11 12 13 14 15
[5] => 16 17 18 19 20 21 22
[6] => 23 24 25 26 27 28 29
[7] => 30 31
string(5) “30 31”

header($string [,replace_flag] [,http_response_code])
replace_flag – [optional] $booleandefault: TRUE, replace similar header
http_response_code – [optional] $integer

Sends an HTTP header specified as
Note: Header()must be used prior to any other output is sent to the user/browser.
Useob_start()to workaround this.

// Redirects the user to the provided URL
header(‘HTTP/1.0 404 Not Found’);
// Sends the HTTP status code 404

See Also:
ob_start() – Start the output buffer

Classes & Object Oriented PHP
While this is outside of the scope of this book, I have included a few notes
here on basic usage to extend the flexibility of this book.
Class Structure: ( brackets[] delineate optional syntax )

class_name [extends base_class]{
var variable_name; // Defines a variable
function function_name([arguments]) {

// Stuff to do goes here

Refer to the containing class – use the reserved variable $this
Declare a class:
$variable = new class_name();

Creating an object:
Static call to an object: class_name::function_name();


When comparing or processing variables and other values you use
operators. Without them, PHP would be more of a word jumble instead of a
language. In some unique cases, operators slightly alter the relationship
between two variables or their function within PHP. Without further adieu,
here they are.

Basic Operators

Add ( + ):
$a = 1; $a = $a + 5; // $a is equal to 6
Subtract ( – ):$s = 10; $s = $s – 5; // $s is equal to 5
Multiply ( * ):$m = 2; $m = $m * 10; // $m is equal to 20
Divide ( / ):$d = 20; $d = $d / 5; // $d is equal to 4
Modulus ( % ) Provides the remainder after division:
$u = 5; $u = $u % 2; // $u is equal to 1

Assignment Operators

Add ( += ):
$a = 1; $a += 5; // $a is equal to 6
Subtract ( -= ):$s = 10; $s -= 5; // $s is equal to 5
Multiply ( *= ):$m = 2; $m *= 10; // $m is equal to 20
Divide ( /= ):$d = 20; $d /= 5; // $d is equal to 4
Modulus ( %= ) Provides the remainder after division:
$u = 5; $u %= 2; // $u is equal to 1
Concatenate ( .= ) Join onto the end of a string:
$c = 5; $c .= 2; // $c is now a string, ’52’

See Also:
Concatenate – Join together in succession

Comparison Operators

Greater Than ( > ):
2 > 1
Less Than ( < ):1 < 2
Greater Than or Equal To ( >= ): 2 >= 2
3 >= 2

Less Than or Equal To ( <= ):
2 <= 2
2 <= 3

Short-Hand Plus or Minus one

Also known as:
Increment ( $integer++; )
Decrement ( $integer–; )


$a = 1;
$a = $a + 1; // $a is now equal to 2
$a++; // $a is now equal to 3
$a–; // $a is now equal to 2 again, same as $a = $a – 1;

@ – Suppress Errors
Placing the commercial at symbol (@) before a function tells PHP to suppress
any errors generated by that function.


Warning: include(DoesNotExist.txt) [function.include]: failed to open
stream: No such file or directory
// blank output below because the error was suppressed

& – Pass by Reference

References allow two variables to refer to the same content. In other words,
a variable points to its content (rather than becoming that content). Passing
by reference allows two variables to point to the same content under
different names. The ampersand ( & ) is placed before the variable to be


$a = 1;
$b = &$a; // $b references the same value as $a, currently 1
$b = $b + 1; // 1 is added to $b, which effects $a the same way
echo “b is equal to $b, and a is equal to $a”;

b is equal to 2, and a is equal to 2

Use this for functions when you wish to simply alter the original variable
and return it again to the same variable name with its new value assigned.

function add(&$var){ // The & is before the argument $var
$a = 1;
$b = 10;
echo “a is $a,”;
echo ” a is $a, and b is $b”; // Note: $a and $b are NOT referenced

a is 2, a is 2, and b is 11
You can also do this to alter an array with foreach:

$array = array(1,2,3,4);
foreach ($array as &$value){
$value = $value + 10;

unset ($value); // Must be included, $value remains after foreach loop

Array ( [0] => 11 [1] => 12 [2] => 13 [3] => 14 )

Ternary Operator

The Ternary Operator is a short-hand form for evaluating what to do when
anexpression is evaluated as either TRUE or FALSE. The conditional returns
either the TRUE or FALSE output. Basic format is as follows:
(expr) ? ValueIfTrue : ValueIfFalse ;

$boolean = TRUE;
$result = ($boolean) ? ‘Is True’ : ‘Is False’;
echo $result;

Is True

// $result is not yet set
$result = (isset($result)) ? $result+1 : 10;
echo ” \$result = $result.”;
$result = (isset($result)) ? $result+1 : 10;
echo ” \$result = $result.”;

$result = 10. $result = 11.

The Equal Sign

Assignment ( = ): Assigns the value on the right to the variable on the left
Equality ( == ): Checks if the left and right values are equal
Identical ( === ): Checks if the left and right values are equal AND identical


$a = 1; // Sets the value of $a as 1 by assignment
$b = TRUE; // Sets the value of $b to the boolean TRUE
if ($a == $b){

echo ‘a is equal to b.’;
if ($a === $b){

echo ‘a is identical and equal to b.’;
a is equal to b.

Not ( ! ), Not Equal to ( != ), Not Identical to ( !== )
Used in conditional statements to evaluate as true a FALSE result of an
expression or if a value is NOT equal to the second value.

$a = 1;
if (!isset($a)){ // If the variable $a is NOT set then…
echo ‘$a is not set’; // The expression is TRUE if it is NOT set
// Since there is no ELSE statement, nothing is displayed
if ($a != 0){
echo ‘$a does not equal zero’;

$a does not equal zero
SeeThe Equal Signabove for equality versus identical

Concatenate (The Period)

A period is used to join dissimilar items as part of a string in the same order
as they are listed. In many cases this is used to reference the value of a
function or of an array, which cannot be referenced within double quotations
( “” ) when being assigned to a $string variable.


$array = array( 1 => ‘Hello’ );
$string = ‘World’;
echo ‘$string in single quotes, followed by ‘ . $array[1] . “$string”;

$string in single quotes, followed by HelloWorld

Comparison Operators (non-arithmetic)

and ( && )
or ( || )
xor ( xor ) – Or, but not All


if (1 == 1 && 2 == 2){
echo ‘And is True’;

And is True

if (1 == 1 || 2 == 2){
echo ‘At least one of these is True’;

At least one of these is True

if (1 == 1 xor 2 == 10){
echo ‘One of these is True, but not both’;

One of these is True, but not both

Control Structures

The heart of PHP is the control structures. Variables and arrays are
lonely without them as they facilitate comparisons, loops, and large hands
telling you to go that way and do it this way. Okay, I made that last part up.
Here we go!

If, ElseIf, Else
if (expr) {
// If expr is TRUE, do this, then exit the IF loop

}elseif (
expr2) {
// If expr is FALSE, and expr2 is TRUE, do this, then exit the loop
// If all expr’s are FALSE, do this, then exit

There can be only one instance ofelse in anif statement, but multipleelseif
expressions are allowed prior to theelse statement.
$x = 1;
if ($x < 1){
echo ‘$x is less than 1’;

}elseif ($x == 1){ // Note the double equals, for comparison
echo ‘$x is equal to 1’;
echo ‘$x is neither equal to 1 or less than 1’;

$x is equal to 1
See Also:
switch – A simpler, more organized usage than multiple if/elseIf

break – Stops a loop and exits regardless of if the statement evaluates as true

Alternative syntax for anif statement:
if (expr):

// If
expr is TRUE, do this, then exit the IF loop
elseif (expr2):
// If expr is FALSE, and expr2 is TRUE, do this, then exit the
// If all expr’s are FALSE, do this, then exit


switch (
expr) {
case value:
// Do this if value matches

// Do this if value2 matches

// [optional]
// Do this if no other cases match. Does not have to be at the end

expr – A $string, $integer, or $float to be compared against
Aswitch evaluates theexpr against any number ofcases or options, specifying
the behavior for eachcase.
Cases can be ‘stacked’ to allow the same portion of code to be evaluated for
different cases:

switch (
expr) {
case value:
case value2:

// Do this if value or value2 matches

switch is evaluated line-by-line, and therefore if there was no break
command, thecase declaration would effectively be ignored and the code
would continue to be processed until theswitch ends or abreak; is reached.

$x = 1;
switch ($x) {
case 1:

echo ‘1’; // Note the lack of a break;
case 2:
echo ‘2’; // Without the break, this is processed line-by-line


Finally, the
default statement is optional, but defines what to do if no cases
are matched. It can be used in troubleshooting to identify when you failed to
include a case for an expected output.

$x = 2;
switch ($x) {
case 1:
echo ‘1’;
case 2:
echo ‘2’;
case 3:
echo ‘3’;


$x = ‘howdy’;
switch ($x) {
case ‘hi’:
echo ‘Hi there’;

default: // Can be anywhere, all cases evaluated before it is used
echo ‘Greetings’;
case ‘hello’:
echo ‘Hello there’;

See Also:
break – Stops a loop and exits regardless of if the statement evaluates as true

Alternative syntax for aswitch statement:

switch (
case value:
// Do this if value matches

// Do this if value2 matches

// [optional]
// Do this if no other cases match. Does not have to be at the end

while (expr) {
// If expr is TRUE, do this, then evaluate expr again

while loop checks theexpr and if it evaluates as true, the script runs
through the entire contents of thewhile until it finishes, then it evaluates the
expr again and repeats until theexpr evaluates as false.


$x = 1;
while ($x <= 3){
echo “$x, “;
$x++; // increments $x by adding 1. Short-hand version

1, 2, 3,
See Also:
do-while – Same aswhile, except theexpr is evaluated after the first action

break – Stops a loop and exits regardless of a TRUE statement evaluation
continue – Stops the iteration of the loop, and theexpr is evaluated again

Alternative syntax for awhile statement:

while (
// If expr is TRUE, do this, then evaluate expr again


do {
// Do this
} while (expr);

do-while loop performs whatever is inside thedo statement, checks the
expr, then if it evaluates as TRUE, runs through the entire contents of thedo
until it finishes, evaluating theexpr again, and repeating until theexpr
evaluates as FALSE.


$x = 1;
do {
echo “$x, “;
$x++; // Makes $x = 2, therefore the while will evaluate as false
} while ($x <= 1);

See Also:
while – Similar todo-while, except theexpr is evaluated first
break – Stops a loop and exits regardless of if the statement evaluates as true
continue – Stops the iteration of the loop, and theexpr is evaluated again


for (
expr1; expr2; expr3) {
// If expr2 is TRUE, do this

When started, the
for loop executesexpr1 once at the beginning. Next,expr2 is
evaluated. Ifexpr2 is true, the code inside thefor loop is executed. When the
for loop reaches the end,expr3 is executed before looping and checkingexpr2


for ($x = 1; $x <= 5; $x++){
echo $x;

See Also:
break – Stops thefor loop and exits it immediately

continue – Stops the current iteration of thefor loop, andexpr3 is executed
before checkingexpr2 again

Alternative syntax for a for statement:

for (
expr1; expr2; expr3):
// If expr2 is TRUE, do this

An example ofcontinue and break in afor loop:
for ($v=0;$v<=10;$v++){
echo $v;
if ($v == 5){

if ($v == 8){

echo ‘,’;


foreach (
$array as $value){
// Do something
// Another form, for keys and values
foreach ($array as $key => $value){
// Do something

foreach loop goes through all items in an array, assigning a temporary
variable name forvalue and, if chosen, thekey as well so they can be used
within the executed code inside the loop.

$array = array(‘John’ => 20, ‘Jane’ => 24, ‘Joseph’ => 28);
foreach ($array as $value){
echo “$value, “;

20, 24, 28,

foreach ($array as $name => $age){
echo “$name – $age”;
echo ‘
’; // XHTML for a line break


John – 20
Jane – 24
Joseph – 28

See Also:
Pass by Reference – Using the ampersand ( & ) to alter an array through

break [$integer]
$integer – [optional] Specifies the number of nested loops to break out of

Exits and stops execution of the current (default)for,foreach,while,do-while,
orswitch loop.
$counter = 0;
while (1 == 1){ // Will run forever
while (0 == 0){ // Will also run forever

$counter++; // Increment $counter plus 1
echo $counter;
if ($counter == 5){

break 2;
echo ‘First while loop’; // Never displayed because of break 2;
break; // Never run, but if it did, would end the first while loop


continue [$integer]

– [optional] Specifies the number of nested loops to skip out of
Note: The$integerdoes notsupply the number of iterations to skip, it always only
stops the current iteration from continuing any further.

Skips the rest of the current loop iteration and if applicable, continues to the
next iteration of the loop3.

for ($x=1;$x<=10;$x++){
if ($x == 5){

// The echo never occurs if $x == 5
echo $x;

return [$variable]
$variable – [optional] The variable to be returned from a function

If used as part of a regular script and not part of a function, it works the
same as exit() ordie(). Return is more commonly used as part of a function
to assign a value to the results of a function back at the original function call.

See Also:

Functions –
Provides an example of returning a $variable as part of a
exit() – Terminate the current script immediately


file $string

Include and evaluate the
file as part of the current script/page. This is an easy
way to store common variables, functions4, or lines of HTML that will be
included by multiple scripts/pages. Failure of the function generates an error.

3 In the case of a switch, continue has the same effect as break
4 Functions should only be included once. Consider using include_once() or require_once()


file $string

Include and evaluate the
file as part of the current script/page. If the file has
already been included, it will ignore the request. This is an easy way to store
common variables, functions, or lines of HTML that will be included by
multiple scripts/pages.
Failure of the function generates an error and terminates the script



file $string

Include and evaluate the
file as part of the current script/page. This is an easy
way to store common variables, functions5, or lines of HTML that will be
included by multiple scripts/pages. Failure of the function generates an error.



file $string

Include and evaluate the
file as part of the current script/page. If the file has
already been included, it will ignore the request. This is an easy way to store
common variables, functions, or lines of HTML that will be included by
multiple scripts/pages.
Failure of the function generates an error and terminates the script

5 Functions should only be included once. Consider using require_once()

Global Variables

While some global variables can be created through the use of
define(), some are reserved because of a special function, giving access to
different types of data. All global variables listed below are arrays that may
or may not contain data, depending on the current script and environment.


$_SERVER[‘HTTP_USER_AGENT’] – Browser description from header
[HTTP_USER_AGENT] => Mozilla/5.0 (X11; U; Linux i686; en-US; rv: Gecko/20080207 Ubuntu/7.10 (gutsy) Firefox/

$_SERVER[‘HTTP_REFERER’] – The page address that referred the user
$_SERVER[‘REMOTE_ADDR’] – The client’s IP address
$_SERVER[‘DOCUMENT_ROOT’] – System root location of current script
[DOCUMENT_ROOT] => /opt/lampp/htdocs
$_SERVER[‘SCRIPT_FILENAME’] – Absolute path of current script
[SCRIPT_FILENAME] => /opt/lampp/htdocs/test.php
$_SERVER[‘REQUEST_URI’] – The Universal Resource Identifier for the page
[REQUEST_URI] => /test.php?test=value
$_SERVER[‘SCRIPT_NAME’] – The current scripts path
[SCRIPT_NAME] => /test.php
$_SERVER[‘QUERY_STRING’] – The current scripts path
[QUERY_STRING] => test=value
$_SERVER[‘PHP_SELF’] – The name of the current script, relative to the root
[PHP_SELF] => /test.php

When submitting a form to the same page/file that contains it, you can use
the $_SERVER[‘PHP_SELF’] variable to dynamically provide the location.


Includes all variables provided by $_GET, $_POST, and $_COOKIE

Includes all variables submitted through HTTP POST, such as an HTML
form with action=”post”.


Includes all variables submitted through the query string, either manually or
from a form with action=”get”.

// Output of print_r($_GET) of the above URL example
Array ( [query] => value )

Variables assigned to the current session.

Any cookies stored for the current website. Only visible after the page was
reloaded if it was just set using setcookie().
See Also:
setcookie() – Assigning and deleting cookies

Variables provided to the script via POST uploads.

A collection of variables about the server environment.

Contains a reference for all variables, global or otherwise, in the script.

Variable Functions

The following functions check details about variables themselves,
rather than addressing a specific aspect of atype of variable. Put another
way, you don’t want to know what type of elephant you have, just that it is
an elephant, and it is about to trample you. Too much? Oh well, here we go


Determine whether the
$variable is empty. Returns TRUE if the $variable is:
” – Empty $string
0 – For an $integer
‘0’ – For a $string
array() – For an $array
An undeclared variable


$string = ‘Hello’;
$array = array();
var_dump( empty($string), empty($array), empty($DoesNotExist) );

bool(false) bool(true) bool(true)
See Also:
is_null() – Check whether a variable is NULL
isset() – Check whether a variable has been set/created/declared


Determine whether the
$variable is NULL. Returns TRUE if it is NULL.
Note: An undeclared$variable will return TRUE but may return an error.

$string = ”;
$integer = 0;
$array = NULL;
var_dump( is_null($string), is_null($integer), is_null($array) );

bool(false) bool(false) bool(true)

isset($variable [, …$variable…])
Accepts multiple$variablesseparated by commas, but will only return TRUE if all
variables are set

Determine whether
$variable has been set/created/declared.

$string = ”;
$integer = 0;
var_dump( isset($string,$integer) ); // True because BOTH are set
echo ‘
’; // XHTML break for new line
unset($string); // unset or destroy the variable
var_dump( isset($string), isset($integer) );

bool(false) bool(true)
See Also:
unset() – Destroy/delete a variable or multiple variables

unset($variable [, …$variable…])
Accepts multiple$variablesseparated by commas
Unsets or destroys/deletes the given $variable(s).

$string = ‘hello’;
var_dump( isset($string) ); // Check if it is set
echo ‘
’; // XHTML break for new line
var_dump( isset($string) ); // Check again

See Also:
isset() – Determine whether a variable has been set


Determine whether the
$variable is an array. Returns TRUE if it is an array.

$array = array();
$array2 = array( ‘one’, ‘two’, ‘three’ );
var_dump( is_array($array), is_array($array2) );

bool(true) bool(true)

Also known as: is_integer()

Determine whether the $variable is an integer. Returns TRUE if it is an

$int = 0;
$string = ‘0’;
var_dump( is_int($int), is_int($string) );

bool(true) bool(false)

Determine whether the $variable is a string. Returns TRUE if it is a string.

$int = 0;
$string = ‘0’;
var_dump( is_string($int), is_string($string) );

bool(false) bool(true)

Determine whether the $variable is an integer or a numeric string (e.g. “12”).
If either is true, it will return TRUE.

$int = 10;
$string = ’10’;
var_dump( is_numeric($int), is_numeric($string) );

bool(true) bool(true)
See Also:
is_int() – Determine if a variable is an integer
is_string() – Determine if a variable is an string

var_dump(expr [, …expr…])
Accepts multiple expressions, separated by commas
expr – A $variable or any expression that generates a result
Shows the type of variable and its value in the following format:

(value) // When evaluating a boolean, integer, or float
string(length) value // When evaluating a string
array(length) { value } // When evaluating an array


$integer = 10;
$string = ‘Hello’;
$array = array( ‘one’ );
var_dump( $integer, $string, $array, is_string($string) );

int(10) string(5) “Hello” array(1) { [0]=> string(3) “one” } bool(true)
See Also:
echo – Prints the value of a $scalar

Surrounding the var_dump() with the HTML tags

will present the
output of multiple expressions in a more human readable format.

// Using the same variables as above
echo ‘

var_dump( $integer, $string, $array, is_string($string) );
echo ‘

string(5) “Hello”
array(1) {

string(3) “one”

Output the contents of $variable6. Typically used to display the contents of
an array.
$array = array( ‘Apple’, ‘Orange’, ‘Melon’ );

Array ( [0] => Apple [1] => Orange [2] => Melon )
See Also:
echo – Display the value of a $scalar

6 If $variable is boolean, TRUE will output 1, and FALSE will output nothing

If you add the HTML tags

around the output, formatting will
be easier to follow.

$array = array( ‘Apple’, ‘Orange’, ‘Melon’ );
echo ‘

echo ‘

[0] => Apple
[1] => Orange
[2] => Melon

Here is a quick function to do this easily:
function preprint($array){
echo ‘

’; print_r ($array); echo ‘


Converts thevalue to a storable representation in a$string.

$array = array( ‘one’, ‘two’, ‘three’ );
$output = serialize($array);
echo $output;

See Also:
unserialize() – Convert a serialized string back into its originalvalue

If adding the serialized data to a MySQL database, you will need to escape
some characters usingaddslashes() and then remove them again with
stripslashes() when recovering the value from the database.

$array = array( ‘one’, ‘two’, ‘three’ );
$db_ready = addslashes(serialize($array));
// add $db_ready to your database (code not included here)
// retrieve it from the database (code not included here)
$normal = unserialize(stripslashes($db_ready));

Converts a serialized $string back into its originalvalue.

$array = array( ‘one’, ‘two’, ‘three’ );
$output = serialize($array);
echo ‘

print_r( unserialize($output) );
echo ‘

string(50) “a:3:{i:0;s:3:”one”;i:1;s:3:”two”;i:2;s:5:”three”;}”

[0] => one
[1] => two
[2] => three

See Also:
serialize() – Convert avalue to a storable representation in a $string


Returns the float value of the
Note: If the$scalaris a string starting with integers, characters after the integers
will be stripped out.


$float = 1.34;
$string = “145the words”;
$string2 = “0025”;
var_dump ( floatval($float), floatval($string), floatval($string2) );

float(1.34) float(145) float(25)

As in the example above, if a string starts with integers and has trailing
characters, you can convert this to a float with this command. However, if
you intend to use this function to retrieve the string equivalent, any leading
zeros will be erased. Be careful!

String Functions

If you were a cat, string functions would be the cat’s meow, all puns
intended. Besides being a large part of your PHP code, they provide much of
the functionality to identify and alter your data into other formats, such as


Adds backslashes (escape string) to items within
$string to make it safe for
database queries. Effects single quotes ( ‘ ), double quotes ( ” ), backslashes
( \ ), and the NUL byte.


$string = ‘ Tom said, “Marcus is mad!”‘;
echo $string;
$string = addslashes($string);
echo $string;

Tom said, “Marcus is mad!” Tom said, \”Marcus is mad!\”
See Also:
get_magic_quotes_gpc – Server setting for automatically applying

addslashes to GET/POST/COOKIE data
stripslashes() – Remove the backslashes created by addslashes()

Removes backslashes (escape string) from items within $string added
through addslashes() or magic_quotes_gpc.

$string = ‘ Tom said, “Marcus is mad!”‘;
$string = addslashes($string);
echo $string;
$string = stripslashes($string);
echo $string;

Tom said, \”Marcus is mad!\” Tom said, “Marcus is mad!”
See Also:

get_magic_quotes_gpc –
Server setting for automatically applying
addslashes to GET/POST/COOKIE data
addslashes() – Adds backslashes to make a string safe for database queries

chunk_split($string [,length] [,endstring])
length – [optional]$integerdefault: 76
endstring – [optional] $stringdefault: “\r\n” (carriage return and new line)

$string into sections oflength characters, every section is terminated
with theendstring. Evaluates only the character length to generate the
resulting string.


$string = ‘Hello Nurse!’;
$string = chunk_split($string, 3);
echo nl2br($string); // Converts \n to the XHTML

echo ‘Notice I am on a new line?’;

string(20) “Hel lo Nur se! ” Hel
Notice I am on a new line?

HTML source code:

string(20) “Hel





Notice I am on a new line?

See Also:

nl2br() –
Convert instances of \n into the XHTML
line break
str_replace() – Replace specified characters in a string
wordwrap() – Similar tochunk_split(), but with some minor variations

The \r\n are formatting characters, which are ignored in HTML if part of
the standard output. If placed within