Introduction and Basics of PHP
Introduction and Basics of PHP
History of PHP
PHP as it's known today is actually the successor to a product named PHP/FI. Created in 1994 by
Rasmus Lerdorf, the very first incarnation of PHP was a simple set of Common Gateway
Interface (CGI) binaries written in the C programming language. Originally used for tracking
visits to his online resume, he named the suite of scripts "Personal Home Page Tools," more
frequently referenced as "PHP Tools." Over time, more functionality was desired, and Rasmus
rewrote PHP Tools, producing a much larger and richer implementation. This new model was
capable of database interaction and more, providing a framework upon which users could
develop simple dynamic web applications such as guestbooks. In June of 1995, Rasmus
» released the source code for PHP Tools to the public, which allowed developers to use it as
they saw fit. This also permitted - and encouraged - users to provide fixes for bugs in the code,
and to generally improve upon it.
In September of that year, Rasmus expanded upon PHP and - for a short time - actually dropped
the PHP name. Now referring to the tools as FI (short for "Forms Interpreter"), the new
implementation included some of the basic functionality of PHP as we know it today. It had Perl-
like variables, automatic interpretation of form variables, and HTML embedded syntax. The
syntax itself was similar to that of Perl, albeit much more limited, simple, and somewhat
inconsistent. In fact, to embed the code into an HTML file, developers had to use HTML
comments. Though this method was not entirely well-received, FI continued to enjoy growth and
acceptance as a CGI tool --- but still not quite as a language. However, this began to change the
following month; in October, 1995, Rasmus released a complete rewrite of the code. Bringing
back the PHP name, it was now (briefly) named "Personal Home Page Construction Kit," and
was the first release to boast what was, at the time, considered an advanced scripting interface.
The language was deliberately designed to resemble C in structure, making it an easy adoption
for developers familiar with C, Perl, and similar languages. Having been thus far limited to
UNIX and POSIX-compliant systems, the potential for a Windows NT implementation was
being explored.
The code got another complete makeover, and in April of 1996, combining the names of past
releases, Rasmus introduced PHP/FI. This second-generation implementation began to truly
evolve PHP from a suite of tools into a programming language in its own right. It included built-
in support for DBM, mSQL, and Postgres95 databases, cookies, user-defined function support,
and much more. That June, PHP/FI was given a version 2.0 status. An interesting fact about this,
however, is that there was only one single full version of PHP 2.0. When it finally graduated
from beta status in November, 1997, the underlying parsing engine was already being entirely
rewritten.
Though it lived a short development life, it continued to enjoy a growing popularity in still-
young world of web development. In 1997 and 1998, PHP/FI had a cult of several thousand users
around the world. A Netcraft survey as of May, 1998, indicated that nearly 60,000 domains
reported having headers containing "PHP", indicating that the host server did indeed have it
installed. This number equated to approximately 1% of all domains on the Internet at the time.
Despite these impressive figures, the maturation of PHP/FI was doomed to limitations; while
there were several minor contributors, it was still primarily developed by an individual.
PHP 3
PHP 3.0 was the first version that closely resembles PHP as it exists today. Finding PHP/FI 2.0
still inefficient and lacking features they needed to power an eCommerce application they were
developing for a university project, Andi Gutmans and Zeev Suraski of Tel Aviv, Israel, began
yet another complete rewrite of the underlying parser in 1997. Approaching Rasmus online, they
discussed various aspects of the current implementation and their redevelopment of PHP. In an
effort to improve the engine and start building upon PHP/FI's existing user base, Andi, Rasmus,
and Zeev decided to collaborate in the development of a new, independent programming
language. This entirely new language was released under a new name, that removed the
implication of limited personal use that the PHP/FI 2.0 name held. It was renamed simply 'PHP',
with the meaning becoming a recursive acronym - PHP: Hypertext Preprocessor.
One of the biggest strengths of PHP 3.0 was its strong extensibility features. In addition to
providing end users with a mature interface for multiple databases, protocols, and APIs, the ease
of extending the language itself attracted dozens of developers who submitted a variety of
modules. Arguably, this was the key to PHP 3.0's tremendous success. Other key features
introduced in PHP 3.0 included object-oriented programming support and a far more powerful
and consistent language syntax.
In June, 1998, with many new developers from around the world joining the effort, PHP 3.0 was
announced by the new PHP Development Team as the official successor to PHP/FI 2.0. Active
development of PHP/FI 2.0, which had all-but ceased as of November of the previous year, was
now officially ended. After roughly nine months of open public testing, when the announcement
of the official release of PHP 3.0 came, it was already installed on over 70,000 domains around
the world, and was no longer limited to POSIX-compliant operating systems. A relatively small
share of the domains reporting PHP as installed were hosted on servers running Windows 95, 98,
and NT, and Macintosh. At its peak, PHP 3.0 was installed on approximately 10% of the web
servers on the Internet.
PHP 4
By the winter of 1998, shortly after PHP 3.0 was officially released, Andi Gutmans and Zeev
Suraski had begun working on a rewrite of PHP's core. The design goals were to improve
performance of complex applications, and improve the modularity of PHP's code base. Such
applications were made possible by PHP 3.0's new features and support for a wide variety of
third party databases and APIs, but PHP 3.0 was not designed to handle such complex
applications efficiently.
The new engine, dubbed 'Zend Engine' (comprised of their first names, Zeev and Andi), met
these design goals successfully, and was first introduced in mid 1999. PHP 4.0, based on this
engine, and coupled with a wide range of additional new features, was officially released in May
2000, almost two years after its predecessor. In addition to the highly improved performance of
this version, PHP 4.0 included other key features such as support for many more web servers,
HTTP sessions, output buffering, more secure ways of handling user input and several new
language constructs.
PHP 5
PHP 5 was released in July 2004 after long development and several pre-releases. It is mainly
driven by its core, the Zend Engine 2.0 with a new object model and dozens of other new
features.
PHP's development team includes dozens of developers, as well as dozens others working on
PHP-related and supporting projects, such as PEAR, PECL, and documentation, and an
underlying network infrastructure of well over one-hundred individual web servers on six of the
seven continents of the world. Though only an estimate based upon statistics from previous
years, it is safe to presume PHP is now installed on tens or even perhaps hundreds of millions of
domains around the world.
PHP performs system functions, i.e. from files on a system it can create, open, read, write,
and close them. The other uses of PHP are:
PHP can handle forms, i.e. gather data from files, save data to a file, thru email
you can send data, return data to the user.
You add, delete, modify elements within your database thru PHP.
Access cookies variables and set cookies.
Using PHP, you can restrict users to access some pages of your website.
It can encrypt data.
Tell your Apache server where you want to serve files from and what extension(s)
you want to identify PHP files (.php is the standard, but you can use .html, .phtml,
or whatever you want). Go to your HTTP configuration files (C:\Program
Files\Apache Group\Apache\conf or whatever your path is), and open httpd.conf
with a text editor. Search for the word DocumentRoot (which should appear twice)
and change both paths to the directory you want to serve files out of. (The default
is C:\Program Files\Apache Group\Apache\htdocs.). Add at least one PHP extension
directive as shown in the first line of the following code:
LoadModule php5_module modules/php5apache.dll
AddType application/x-httpd-php .php .phtml
You may also need to add the following line:
AddModule mod_php5.c
Stop and restart the WWW service. Go to the Start menu -> Settings -> Control
Panel -> Services. Scroll down the list to IIS Admin Service. Select it and click Stop.
After it stops, select World Wide Web Publishing Service and click Start. Stopping
and restarting the service from within Internet Service Manager will not suffice.
Since this is Windows, you may also wish to reboot.
Open a text editor. Type: <?php phpinfo(); ?>. Save this file in your Web server's
document root as info.php.
Start any Web browser and browse the file.you must always use an HTTP request
(http://www.testdomain.com/info.php or http://localhost/info.php or
http://127.0.0.1/info.php) rather than a filename (/home/httpd/info.php) for the
file to be parsed correctly
You should see a long table of information about your new PHP installation message
Congratulations!
Apache Configuration
If you are using Apache as a Web Server, then this section will guide you to edit Apache
Configuration Files.
PHP.INI File Configuration
The PHP configuration file, php.ini, is the final and most immediate way to affect PHP's
functionality.
Just Check it here: PHP.INI File Configuration
Windows IIS Configuration
To configure IIS on your Windows machine you can refer your IIS Reference Manual
shipped along with IIS.
With the increase in the use of internet for every purpose; right from leisure to business, the
number of websites getting developed is increasing each day. We have moved from static to
dynamic websites and PHP has made it easier for us to develop such dynamic websites. PHP, a
server side scripting language has got a plethora of benefits, which have become the reasons of it
being extensively used across the world for developing high class websites.
There are millions of websites developed and still counting. Why do you think PHP web
development is so popular? If you think just because it is open source, thus free, you are wrong.
Of course, it is one of the reasons, but it is not sufficient to convince people to use it. There are
other benefits of PHP which attracts people towards it. So, let us take a look at some of the most
important reasons to use PHP in web development services.
1. Easy: This server side scripting language is extremely easy to learn, as compared to other
languages. Also, if you are familiar with the syntax of C or Perl, you will learn PHP
easily and quickly; all thanks to easy to understand syntax!
2. Control: While other languages need long scripts, PHP can do the same work in a few
lines of code; having the maximum control over the websites. Also, whenever you want
to make changes, you can edit is easily.
3. Cost efficient: As you know, PHP is open source, it is free of cost. You need not buy
expensive software for it. Your website will be developed in the minimal cost.
4. Efficient: As you know you can enhance the performance of the website built in PHP, as
it is scalable when writing the code as well as reliable too when you need to deal with a
lot of web pages.
5. Access to support: As PHP is being used by a huge number of people, a large
community is formed. So, you need not worry if you get stuck somewhere. You will
easily get the support from them.
6. Platform independent: Whether it is Windows, MacOS, Linux or UNIX; it supports all
the major web browsers.
7. Supports all servers: PHP also supports all the major web servers; be it Apache or
Microsoft IIS. It also supports Netscape and personal web server.
8. Speedy: PHP uses its own memory, so the workload of the server and loading time gets
reduced automatically, which results into the faster processing speed. So, it reduces the
development time when it comes to the web apps like eCommerce or CRM.
9. Secured: It is one of the most secured way of developing websites and web applications;
as it has got a security layer to protect against viruses and threats.
10. Tested, proven and trusted: As it has been used for over 2 decades by millions of
people, its capabilities have been tested and proven and thus trusted by the most
developers.
But first, let’s take a look at the top reasons why many developers like to use PHP frameworks
and how these frameworks can level up your development process. Here’s what PHP
frameworks do:
1. Laravel
Although Laravel is a relatively new PHP framework (it was released in 2011), according to
Sitepoint’s recent online survey it is the most popular framework among developers. Laravel has
a huge ecosystem with an instant hosting and deployment platform, and its official website offers
many screencast tutorials called Laracasts.
Laravel has many features that make rapid application development possible. Laravel has its own
light-weight templating engine called “Blade”, elegant syntax that facilitates tasks you
frequently need to do, such as authentication, sessions, queueing, caching and RESTful routing.
Laravel also includes a local development environment called Homestead that is a packaged
Vagrant box.
2. Symfony
The components of the Symfony 2 framework are used by many impressive projects such as the
Drupal content management system, or the phpBB forum software, but Laravel – the framework
listed above – also relies on it. Symfony has a wide developer community and many ardent
fans.
Symfony Components are reusable PHP libraries that you can complete different tasks with,
such as form creation, object configuration, routing, authentication, templating, and many others.
You can install any of the Components with the Composer PHP dependency manager. The
website of Symfony has a cool showcase section where you can take a peek at the projects
developers accomplished with the help of this handy framework.
3. CodeIgniter
CodeIgniter is a lightweight PHP framework that is almost 10 years old (initially released in
2006). CodeIgniter has a very straightforward installation process that requires only a minimal
configuration, so it can save you a lot of hassle. It’s also an ideal choice if you want to avoid
PHP version conflict, as it works nicely on almost all shared and dedicated hosting
platforms (currently requires only PHP 5.2.4).
CodeIgniter is not strictly based on the MVC development pattern. Using Controller classes is a
must, but Models and Views are optional, and you can use your own coding and naming
conventions, evidence that CodeIgniter gives great freedom to developers. If you download it,
you’ll see it’s only about 2MB, so it’s a lean framework, but it allows you to add third-party
plugins if you need more complicated functionalities.
4. Yii 2
If you choose the Yii framework you give a boost to the performance of your site as it’s faster
than other PHP frameworks, because it extensively uses the lazy loading technique. Yii 2 is
purely object-oriented, and it’s based on the DRY (Don’t Repeat Yourself) coding concept, so it
provides you with a pretty clean and logical code base.
Yii 2 is integrated with jQuery, and it comes with a set of AJAX-enabled features, and it
implements an easy-to-use skinning and theming mechanism, so it can be a great choice for
someone who comes from a frontend background. It has also a powerful class code generator
called Gii that facilitates object-oriented programming and rapid prototyping, and provides a
web-based interface that allows you to interactively generate the code you need.
5. Phalcon
The Phalcon framework was released in 2012, and it quickly gained popularity among PHP
developers. Phalcon is said to be fast as a falcon, because it was written in C and C++ to reach
the highest level of performance optimization possible. Good news is that you don’t have to
learn the C language, as the functionality is exposed as PHP classes that are ready to use for
any application.
<?php
// PHP code goes here
?>
A PHP file normally contains HTML tags, and some PHP scripting code.
Below, we have an example of a simple PHP file, with a PHP script that uses a built-in PHP
function "echo" to output the text "Hello World!" on a web page:
Example
<!DOCTYPE html>
<html>
<body>
</body>
</html>
Comments in PHP
A comment in PHP code is a line that is not read/executed as part of the program. Its only
purpose is to be read by someone who is looking at the code.
Example
<!DOCTYPE html>
<html>
<body>
<?php
// This is a single-line comment
/*
This is a multiple-lines comment block
that spans over multiple
lines
*/
// You can also use comments to leave out parts of a code line
$x = 5 /* + 15 */ + 5;
echo $x;
?>
</body>
</html>
In PHP, all keywords (e.g. if, else, while, echo, etc.), classes, functions, and user-defined
functions are NOT case-sensitive.
In the example below, all three echo statements below are legal (and equal):
Example
<!DOCTYPE html>
<html>
<body>
<?php
ECHO "Hello World!<br>";
echo "Hello World!<br>";
EcHo "Hello World!<br>";
?>
</body>
</html>
In the example below, only the first statement will display the value of the $color variable (this is
because $color, $COLOR, and $coLOR are treated as three different variables):
Example
<!DOCTYPE html>
<html>
<body>
<?php
$color = "red";
echo "My car is " . $color . "<br>";
echo "My house is " . $COLOR . "<br>";
echo "My boat is " . $coLOR . "<br>";
?>
</body>
</html>
PHP 5 Variables
In PHP, a variable starts with the $ sign, followed by the name of the variable:
Example
<?php
$txt = "Hello world!";
$x = 5;
$y = 10.5;
?>
After the execution of the statements above, the variable $txt will hold the value Hello world!,
the variable $x will hold the value 5, and the variable $y will hold the value 10.5.
Note: When you assign a text value to a variable, put quotes around the value.
Note: Unlike other programming languages, PHP has no command for declaring a variable. It is
created the moment you first assign a value to it.
PHP Variables
A variable can have a short name (like x and y) or a more descriptive name (age, carname,
total_volume).
A variable starts with the $ sign, followed by the name of the variable
A variable name must start with a letter or the underscore character
A variable name cannot start with a number
A variable name can only contain alpha-numeric characters and underscores (A-z, 0-9, and _ )
Variable names are case-sensitive ($age and $AGE are two different variables)
Output Variables
The PHP echo statement is often used to output data to the screen.
The following example will show how to output text and a variable:
Example
<?php
$txt = "W3Schools.com";
echo "I love $txt!";
?>
The following example will produce the same output as the example above:
Example
<?php
$txt = "W3Schools.com";
echo "I love " . $txt . "!";
?>
Example
<?php
$x = 5;
$y = 4;
echo $x + $y;
?>
Note: You will learn more about the echo statement and how to output data to the screen in the
next chapter.
PHP is a Loosely Typed Language
In the example above, notice that we did not have to tell PHP which data type the variable is.
PHP automatically converts the variable to the correct data type, depending on its value.
In other languages such as C, C++, and Java, the programmer must declare the name and type of
the variable before using it.
The scope of a variable is the part of the script where the variable can be referenced/used.
local
global
static
A variable declared outside a function has a GLOBAL SCOPE and can only be accessed outside
a function:
Example
<?php
$x = 5; // global scope
function myTest() {
// using x inside this function will generate an error
echo "<p>Variable x inside function is: $x</p>";
}
myTest();
Example
<?php
function myTest() {
$x = 5; // local scope
echo "<p>Variable x inside function is: $x</p>";
}
myTest();
You can have local variables with the same name in different functions, because local variables
are only recognized by the function in which they are declared.
The global keyword is used to access a global variable from within a function.
To do this, use the global keyword before the variables (inside the function):
Example
<?php
$x = 5;
$y = 10;
function myTest() {
global $x, $y;
$y = $x + $y;
}
myTest();
echo $y; // outputs 15
?>
PHP also stores all global variables in an array called $GLOBALS[index]. The index holds the
name of the variable. This array is also accessible from within functions and can be used to
update global variables directly.
Example
<?php
$x = 5;
$y = 10;
function myTest() {
$GLOBALS['y'] = $GLOBALS['x'] + $GLOBALS['y'];
}
myTest();
echo $y; // outputs 15
?>
Normally, when a function is completed/executed, all of its variables are deleted. However,
sometimes we want a local variable NOT to be deleted. We need it for a further job.
To do this, use the static keyword when you first declare the variable:
Example
<?php
function myTest() {
static $x = 0;
echo $x;
$x++;
}
myTest();
myTest();
myTest();
?>
Then, each time the function is called, that variable will still have the information it contained
from the last time the function was called.
In PHP there are two basic ways to get output: echo and print.
In this tutorial we use echo (and print) in almost every example. So, this chapter contains a little
more info about those two output statements.
echo and print are more or less the same. They are both used to output data to the screen.
The differences are small: echo has no return value while print has a return value of 1 so it can be
used in expressions. echo can take multiple parameters (although such usage is rare) while print
can take one argument. echo is marginally faster than print.
The echo statement can be used with or without parentheses: echo or echo().
Display Text
The following example shows how to output text with the echo command (notice that the text
can contain HTML markup):
Example
<?php
echo "<h2>PHP is Fun!</h2>";
echo "Hello world!<br>";
echo "I'm about to learn PHP!<br>";
echo "This ", "string ", "was ", "made ", "with multiple parameters.";
?>
Display Variables
The following example shows how to output text and variables with the echo statement:
Example
<?php
$txt1 = "Learn PHP";
$txt2 = "W3Schools.com";
$x = 5;
$y = 4;
The print statement can be used with or without parentheses: print or print().
Display Text
The following example shows how to output text with the print command (notice that the text
can contain HTML markup):
Example
<?php
print "<h2>PHP is Fun!</h2>";
print "Hello world!<br>";
print "I'm about to learn PHP!";
?>
Display Variables
The following example shows how to output text and variables with the print statement:
Example
<?php
$txt1 = "Learn PHP";
$txt2 = "W3Schools.com";
$x = 5;
$y = 4;
print "<h2>" . $txt1 . "</h2>";
print "Study PHP at " . $txt2 . "<br>";
print $x + $y;
?>
Variables can store data of different types, and different data types can do different things.
String
Integer
Float (floating point numbers - also called double)
Boolean
Array
Object
NULL
Resource
PHP String
A string can be any text inside quotes. You can use single or double quotes:
Example
<?php
$x = "Hello world!";
$y = 'Hello world!';
echo $x;
echo "<br>";
echo $y;
?>
PHP Integer
In the following example $x is an integer. The PHP var_dump() function returns the data type
and value:
Example
<?php
$x = 5985;
var_dump($x);
?>
PHP Float
A float (floating point number) is a number with a decimal point or a number in exponential
form.
In the following example $x is a float. The PHP var_dump() function returns the data type and
value:
Example
<?php
$x = 10.365;
var_dump($x);
?>
PHP Boolean
$x = true;
$y = false;
Booleans are often used in conditional testing. You will learn more about conditional testing in a
later chapter of this tutorial.
PHP Array
In the following example $cars is an array. The PHP var_dump() function returns the data type
and value:
Example
<?php
$cars = array("Volvo","BMW","Toyota");
var_dump($cars);
?>
You will learn a lot more about arrays in later chapters of this tutorial.
PHP Object
An object is a data type which stores data and information on how to process that data.
First we must declare a class of object. For this, we use the class keyword. A class is a structure
that can contain properties and methods:
Example
<?php
class Car {
function Car() {
$this->model = "VW";
}
}
// create an object
$herbie = new Car();
Null is a special data type which can have only one value: NULL.
A variable of data type NULL is a variable that has no value assigned to it.
Example
<?php
$x = "Hello world!";
$x = null;
var_dump($x);
?>
PHP Resource
The special resource type is not an actual data type. It is the storing of a reference to functions
and resources external to PHP.
We will not talk about the resource type here, since it is an advanced topic
In this chapter we will look at some commonly used functions to manipulate strings.
Example
<?php
echo strlen("Hello world!"); // outputs 12
?>
Example
<?php
echo str_word_count("Hello world!"); // outputs 2
?>
Reverse a String
Example
<?php
echo strrev("Hello world!"); // outputs !dlrow olleH
?>
The PHP strpos() function searches for a specific text within a string.
If a match is found, the function returns the character position of the first match. If no match is
found, it will return FALSE.
The example below searches for the text "world" in the string "Hello world!":
Example
<?php
echo strpos("Hello world!", "world"); // outputs 6
?>
The PHP str_replace() function replaces some characters with some other characters in a string.
Example
<?php
echo str_replace("world", "Dolly", "Hello world!"); // outputs Hello Dolly!
?>
For a complete reference of all string functions, go to our complete PHP String Reference.
The PHP string reference contains description and example of use, for each function!
PHP Constants
A constant is an identifier (name) for a simple value. The value cannot be changed during the
script.
A valid constant name starts with a letter or underscore (no $ sign before the constant name).
Note: Unlike variables, constants are automatically global across the entire script.
Syntax
Parameters:
Example
<?php
define("GREETING", "Welcome to W3Schools.com!");
echo GREETING;
?>
Example
<?php
define("GREETING", "Welcome to W3Schools.com!", true);
echo greeting;
?>
Constants are automatically global and can be used across the entire script.
The example below uses a constant inside a function, even if it is defined outside the function:
Example
<?php
define("GREETING", "Welcome to W3Schools.com!");
function myTest() {
echo GREETING;
}
myTest();
?>
PHP Operators
Arithmetic operators
Assignment operators
Comparison operators
Increment/Decrement operators
Logical operators
String operators
Array operators
The PHP arithmetic operators are used with numeric values to perform common arithmetical
operations, such as addition, subtraction, multiplication etc.
The PHP assignment operators are used with numeric values to write a value to a variable.
The basic assignment operator in PHP is "=". It means that the left operand gets set to the value
of the assignment expression on the right.
x += y x = x + y Addition
x -= y x = x - y Subtraction
x *= y x = x * y Multiplication
x /= y x = x / y Division
x %= y x = x % y Modulus
The PHP comparison operators are used to compare two values (number or string):
$x ===
=== Identical Returns true if $x is equal to $y, and they are of the same type
$y
Returns true if $x is not equal to $y, or they are not of the same
!== Not identical $x !== $y
type
<= Less than or equal to $x <= $y Returns true if $x is less than or equal to $y
PHP has two operators that are specially designed for strings.
Concatenation of $txt1
. Concatenation $txt1 . $txt2
and $txt2
$x === Returns true if $x and $y have the same key/value pairs in the same order
=== Identity
$y and of the same types
Non- $x !==
!== Returns true if $x is not identical to $y
identity $y
PHP Conditional Statements
Very often when you write code, you want to perform different actions for different conditions.
You can use conditional statements in your code to do this.
Syntax
if (condition) {
code to be executed if condition is true;
}
The example below will output "Have a good day!" if the current time (HOUR) is less than 20:
Example
<?php
$t = date("H");
The if....else statement executes some code if a condition is true and another code if that
condition is false.
Syntax
if (condition) {
code to be executed if condition is true;
} else {
code to be executed if condition is false;
}
The example below will output "Have a good day!" if the current time is less than 20, and "Have
a good night!" otherwise:
Example
<?php
$t = date("H");
The if....elseif...else statement executes different codes for more than two conditions.
Syntax
if (condition) {
code to be executed if this condition is true;
} elseif (condition) {
code to be executed if this condition is true;
} else {
code to be executed if all conditions are false;
}
The example below will output "Have a good morning!" if the current time is less than 10, and
"Have a good day!" if the current time is less than 20. Otherwise it will output "Have a good
night!":
Example
<?php
$t = date("H");
Use the switch statement to select one of many blocks of code to be executed.
Syntax
switch (n) {
case label1:
code to be executed if n=label1;
break;
case label2:
code to be executed if n=label2;
break;
case label3:
code to be executed if n=label3;
break;
...
default:
code to be executed if n is different from all labels;
}
This is how it works: First we have a single expression n (most often a variable), that is
evaluated once. The value of the expression is then compared with the values for each case in the
structure. If there is a match, the block of code associated with that case is executed. Use break
to prevent the code from running into the next case automatically. The default statement is used
if no match is found.
Example
<?php
$favcolor = "red";
switch ($favcolor) {
case "red":
echo "Your favorite color is red!";
break;
case "blue":
echo "Your favorite color is blue!";
break;
case "green":
echo "Your favorite color is green!";
break;
default:
echo "Your favorite color is neither red, blue, nor green!";
}
?>
PHP Loops
Often when you write code, you want the same block of code to run over and over again in a
row. Instead of adding several almost equal code-lines in a script, we can use loops to perform a
task like this.
while - loops through a block of code as long as the specified condition is true
do...while - loops through a block of code once, and then repeats the loop as long as the
specified condition is true
for - loops through a block of code a specified number of times
foreach - loops through a block of code for each element in an array
The while loop executes a block of code as long as the specified condition is true.
Syntax
while (condition is true) {
code to be executed;
}
The example below first sets a variable $x to 1 ($x = 1). Then, the while loop will continue to
run as long as $x is less than, or equal to 5 ($x <= 5). $x will increase by 1 each time the loop
runs ($x++):
Example
<?php
$x = 1;
while($x <= 5) {
echo "The number is: $x <br>";
$x++;
}
?>
The do...while loop will always execute the block of code once, it will then check the condition,
and repeat the loop while the specified condition is true.
Syntax
do {
code to be executed;
} while (condition is true);
The example below first sets a variable $x to 1 ($x = 1). Then, the do while loop will write some
output, and then increment the variable $x with 1. Then the condition is checked (is $x less than,
or equal to 5?), and the loop will continue to run as long as $x is less than, or equal to 5:
Example
<?php
$x = 1;
do {
echo "The number is: $x <br>";
$x++;
} while ($x <= 5);
?>
Notice that in a do while loop the condition is tested AFTER executing the statements within the
loop. This means that the do while loop would execute its statements at least once, even if the
condition is false the first time.
The example below sets the $x variable to 6, then it runs the loop, and then the condition is
checked:
Example
<?php
$x = 6;
do {
echo "The number is: $x <br>";
$x++;
} while ($x <= 5);
?>
The for loop is used when you know in advance how many times the script should run.
Syntax
Parameters:
Example
<?php
for ($x = 0; $x <= 10; $x++) {
echo "The number is: $x <br>";
}
?>
The foreach loop works only on arrays, and is used to loop through each key/value pair in an
array.
Syntax
For every loop iteration, the value of the current array element is assigned to $value and the array
pointer is moved by one, until it reaches the last array element.
The following example demonstrates a loop that will output the values of the given array
($colors):
Example
<?php
$colors = array("red", "green", "blue", "yellow");
Besides the built-in PHP functions, we can create our own functions.
Syntax
function functionName() {
code to be executed;
}
Note: A function name can start with a letter or underscore (not a number).
Tip: Give the function a name that reflects what the function does!
In the example below, we create a function named "writeMsg()". The opening curly brace ( { )
indicates the beginning of the function code and the closing curly brace ( } ) indicates the end of
the function. The function outputs "Hello world!". To call the function, just write its name:
Example
<?php
function writeMsg() {
echo "Hello world!";
}
Information can be passed to functions through arguments. An argument is just like a variable.
Arguments are specified after the function name, inside the parentheses. You can add as many
arguments as you want, just separate them with a comma.
The following example has a function with one argument ($fname). When the familyName()
function is called, we also pass along a name (e.g. Jani), and the name is used inside the function,
which outputs several different first names, but an equal last name:
Example
<?php
function familyName($fname) {
echo "$fname Refsnes.<br>";
}
familyName("Jani");
familyName("Hege");
familyName("Stale");
familyName("Kai Jim");
familyName("Borge");
?>
The following example has a function with two arguments ($fname and $year):
Example
<?php
function familyName($fname, $year) {
echo "$fname Refsnes. Born in $year <br>";
}
familyName("Hege", "1975");
familyName("Stale", "1978");
familyName("Kai Jim", "1983");
?>
The following example shows how to use a default parameter. If we call the function setHeight()
without arguments it takes the default value as argument:
Example
<?php
function setHeight($minheight = 50) {
echo "The height is : $minheight <br>";
}
setHeight(350);
setHeight(); // will use the default value of 50
setHeight(135);
setHeight(80);
?>
Example
<?php
function sum($x, $y) {
$z = $x + $y;
return $z;
}
What is an Array?
An array is a special variable, which can hold more than one value at a time.
If you have a list of items (a list of car names, for example), storing the cars in single variables
could look like this:
$cars1 = "Volvo";
$cars2 = "BMW";
$cars3 = "Toyota";
However, what if you want to loop through the cars and find a specific one? And what if you had
not 3 cars, but 300?
An array can hold many values under a single name, and you can access the values by referring
to an index number.
Create an Array in PHP
array();
The index can be assigned automatically (index always starts at 0), like this:
$cars[0] = "Volvo";
$cars[1] = "BMW";
$cars[2] = "Toyota";
The following example creates an indexed array named $cars, assigns three elements to it, and
then prints a text containing the array values:
Example
<?php
$cars = array("Volvo", "BMW", "Toyota");
echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";
?>
The count() function is used to return the length (the number of elements) of an array:
Example
<?php
$cars = array("Volvo", "BMW", "Toyota");
echo count($cars);
?>
To loop through and print all the values of an indexed array, you could use a for loop, like this:
Example
<?php
$cars = array("Volvo", "BMW", "Toyota");
$arrlength = count($cars);
Associative arrays are arrays that use named keys that you assign to them.
or:
$age['Peter'] = "35";
$age['Ben'] = "37";
$age['Joe'] = "43";
Example
<?php
$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");
echo "Peter is " . $age['Peter'] . " years old.";
?>
To loop through and print all the values of an associative array, you could use a foreach loop,
like this:
Example
<?php
$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");
Multidimensional Arrays
For a complete reference of all array functions, go to our complete PHP Array Reference.
The reference contains a brief description, and examples of use, for each function!
In this chapter, we will go through the following PHP array sort functions:
The following example sorts the elements of the $cars array in ascending alphabetical order:
Example
<?php
$cars = array("Volvo", "BMW", "Toyota");
sort($cars);
?>
The following example sorts the elements of the $numbers array in ascending numerical order:
Example
<?php
$numbers = array(4, 6, 2, 22, 11);
sort($numbers);
?>
The following example sorts the elements of the $cars array in descending alphabetical order:
Example
<?php
$cars = array("Volvo", "BMW", "Toyota");
rsort($cars);
?>
The following example sorts the elements of the $numbers array in descending numerical order:
Example
<?php
$numbers = array(4, 6, 2, 22, 11);
rsort($numbers);
?>
The following example sorts an associative array in ascending order, according to the value:
Example
<?php
$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");
asort($age);
?>
The following example sorts an associative array in ascending order, according to the key:
Example
<?php
$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");
ksort($age);
?>
The following example sorts an associative array in descending order, according to the value:
Example
<?php
$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");
arsort($age);
?>
Sort Array (Descending Order), According to Key - krsort()
The following example sorts an associative array in descending order, according to the key:
Example
<?php
$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");
krsort($age);
?>
Several predefined variables in PHP are "superglobals", which means that they are always
accessible, regardless of scope - and you can access them from any function, class or file without
having to do anything special.
$GLOBALS
$_SERVER
$_REQUEST
$_POST
$_GET
$_FILES
$_ENV
$_COOKIE
$_SESSION
This chapter will explain some of the superglobals, and the rest will be explained in later
chapters.
PHP $GLOBALS
$GLOBALS is a PHP super global variable which is used to access global variables from
anywhere in the PHP script (also from within functions or methods).
PHP stores all global variables in an array called $GLOBALS[index]. The index holds the name
of the variable.
The example below shows how to use the super global variable $GLOBALS:
Example
<?php
$x = 75;
$y = 25;
function addition() {
$GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
}
addition();
echo $z;
?>
In the example above, since z is a variable present within the $GLOBALS array, it is also accessible from
outside the function!
PHP $_SERVER
$_SERVER is a PHP super global variable which holds information about headers, paths, and
script locations.
The example below shows how to use some of the elements in $_SERVER:
Example
<?php
echo $_SERVER['PHP_SELF'];
echo "<br>";
echo $_SERVER['SERVER_NAME'];
echo "<br>";
echo $_SERVER['HTTP_HOST'];
echo "<br>";
echo $_SERVER['HTTP_REFERER'];
echo "<br>";
echo $_SERVER['HTTP_USER_AGENT'];
echo "<br>";
echo $_SERVER['SCRIPT_NAME'];
?>
The following table lists the most important elements that can go inside $_SERVER:
Element/Code Description
$_SERVER['PHP_SELF'] Returns the filename of the currently executing script
$_SERVER['QUERY_STRING'] Returns the query string if the page is accessed via a query string
Returns the IP address from where the user is viewing the current
$_SERVER['REMOTE_ADDR']
page
Returns the Host name from where the user is viewing the current
$_SERVER['REMOTE_HOST']
page
Returns the port on the server machine being used by the web
$_SERVER['SERVER_PORT']
server for communication (such as 80)
Returns the server version and virtual host name which are added
$_SERVER['SERVER_SIGNATURE']
to server-generated pages
$_SERVER['PATH_TRANSLATED'] Returns the file system based path to the current script
PHP $_REQUEST
The example below shows a form with an input field and a submit button. When a user submits
the data by clicking on "Submit", the form data is sent to the file specified in the action attribute
of the <form> tag. In this example, we point to this file itself for processing form data. If you
wish to use another PHP file to process form data, replace that with the filename of your choice.
Then, we can use the super global variable $_REQUEST to collect the value of the input field:
Example
<html>
<body>
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// collect value of input field
$name = $_REQUEST['fname'];
if (empty($name)) {
echo "Name is empty";
} else {
echo $name;
}
}
?>
</body>
</html>
PHP $_POST
PHP $_POST is widely used to collect form data after submitting an HTML form with
method="post". $_POST is also widely used to pass variables.
The example below shows a form with an input field and a submit button. When a user submits
the data by clicking on "Submit", the form data is sent to the file specified in the action attribute
of the <form> tag. In this example, we point to the file itself for processing form data. If you
wish to use another PHP file to process form data, replace that with the filename of your choice.
Then, we can use the super global variable $_POST to collect the value of the input field:
Example
<html>
<body>
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// collect value of input field
$name = $_POST['fname'];
if (empty($name)) {
echo "Name is empty";
} else {
echo $name;
}
}
?>
</body>
</html>
PHP $_GET
PHP $_GET can also be used to collect form data after submitting an HTML form with
method="get".
<html>
<body>
</body>
</html> ..
When a user clicks on the link "Test $GET", the parameters "subject" and "web" are sent to
"test_get.php", and you can then access their values in "test_get.php" with $_GET.
Example
<html>
<body>
<?php
echo "Study " . $_GET['subject'] . " at " . $_GET['web'];
?>
</body>
</html>
Tip: You will learn more about $_POST and $_GET in the PHP Forms chapter.