PHP Basics by Lisa Wise

nostalgicisolatedSoftware and s/w Development

Nov 4, 2013 (4 years and 7 months ago)


PHP Basics
based on some material

by Lisa Wise
and PHP on line manual at:



Scripting vs Programming

Code Examples

PHP; Perl; JSP

PHP Strengths

Basics of PHP

Included files

Variables & Scope


Variable types ; Boolean; Strings

String Functions & Parsers

Screening User Input/Output

Maths functions

Control and flow


PHP is a scripting language that allows you to create
dynamic web pages

You can embed php scripting within normal html coding

PHP was designed primarily for the web

PHP includes a comprehensive set of database access

Scripting vs Programming

A script is interpreted line by line every time it is run

A true programming language is compiled from its
human readable form(source code) into a machine
readable form (binary code) which is delivered to the
user as a program.

Variables in scripting languages are typeless whereas
variables in programs need to be declared as a
particular type and have memory allocated to them.

PHP requires programming skills

PHP web sites should be developed within a software
engineering framework

PHP Competitors


Microsoft Active Server Pages (ASP)

Java Server Pages (JSP)

Allaire Cold Fusion

It would be good to work together to make
equivalent code libraries across scripting


PHP Code Examples


$name = "Lisa";

$date = date ("d
Y", time());




<title>Hello World</title>



<h1>Hello World</h1>

<p>It's <?php echo $date; ?> and all is well. </p>


echo "<p>Hello ".$name.".</p>




Perl Coding Example


print "Content
type: text/html

$date = `/usr/local/bin/date`;

$name = "Lisa";

print "<html>";

print "<head>";

print "<title>Hello World</title>"

print "</head>

print "<h1>Hello World</h1>";

print "<p>It
's $date and all is well</p>";

print "<p>Hello $name</p>";

print "</body></html>";

JSP Coding Example

<%@ page language="java"

contentType="text/html" %>

<%! String name = "Lisa" %>


<head> <title>Hello World</title> </head>


<h1>Hello World</h1>

<p>It's <%= new java.util.Date().toString() %>

and all is well. </p>

<p> Hello <%= name %>.</p>



PHP Strengths

High performance


see benchmarks at

Interfaces to different database systems

Low cost

SourceForge has

(Apache, PHP and
MySQL) for Windows

Ease of learning and use


Basics of PHP

PHP files end with .php

other places use .php3 .phtml .php4 as well

PHP code is contained within tags

Canonical: <?php ?> or Short
open: <? ?>

HTML script tags: <script language="php">

Recommend canonical tags so as not to confuse
with xml tags

Include files

Files can be inserted into other files using include
or require

These files can have any name and be anywhere
on the filesystem so long as the file trying to
include them has appropriate rights

CAVEAT: if these files are not called blah.php,
and they are fetched independently by a browser,
they will be rendered in plaintext rather than
passed to the PHP interpreter

not good if they
contain username/passwords and the like.


Most things in PHP execute silently

You need to explicitly ask PHP to generate output

Echo is not a function and cannot return a value

echo "<p>This is a paragraph.</p>";

Print is a function and returns a value

1 = success, 0 = failure

print ("<p>This is a paragraph too.</p>");

Use echo or print statements and View Source for
debugging your code


All variables begin with $ and can contain letters,
digits and underscore (and no digit directly after
the $)

The value of a variable is the value of its most
recent assignment

Don’t need to declare variables

Variables have no intrinsic type other than the
type of their current value

Can have variable variables $$variable

Like a pointer variable type; best to avoid

PHP Manual

Variables Scope

Scope refers to where within a script or program a
variable has meaning or a value

Mostly script variables are available to you
anywhere within your script.

Note that variables inside functions are local to
that function and a function cannot access script
variables outside the function even if they are in
the same file.

The modifiers global and static allow function
variables to be accessed outside the function or to
hold their value between function calls

Variable types









Variable Examples


$a = 1234; # decimal number

$a =
123; # a negative number

$a = 0123; # octal number (equivalent to 83 decimal)

$a = 0x1A; # hexadecimal number (equivalent to 26 decimal)

Floating Point Numbers

$a = 1.234; $a = 1.2e3; $a = 7E


$foo = True; // assign the value TRUE to $foo

// == is an operator which returns a boolean

if ($action == "show_version") {

echo "The version is 1.23";


// this is not necessary:

if ($show_separators == TRUE) {

echo "<hr>


// because you can simply type this:

if ($show_separators) {

echo "<hr>


Variable Examples cont.

Strings (single or double quoted)

echo 'this is a simple string';

echo 'You can also have embedded newlines in strings, like this way.';

echo 'Arnold once said: "I
'll be back"';

// output: ... "I'll be back"

echo 'Are you sure you want to delete C:

// output: ... delete C:


$error_descriptions[E_ERROR] = "A fatal error has occured";

$error_descriptions[E_WARNING] = "PHP issued a warning";

$error_descriptions[E_NOTICE] = "This is just an informal notice";

the last example is in fact the same as writing:

$error_descriptions[1] = "A fatal error has occured";

$error_descriptions[2] = "PHP issued a warning";

$error_descriptions[8] = "This is just an informal notice";

(The first method is useful if E_ERROR is defined as a constant etc).

Constants and Globals

To define a constant:

define(“PI”, 3.1416);

$area = PI*$radius*$$radius ;


Defined outside any function; eg form variables

global $var1, $var2 …

…function xyz()


$localvarX = $var1



Unlike PHP3, PHP4 has a boolean type

if (TRUE) print ("This will always print");

A number is FALSE if it exactly equals 0
otherwise it is TRUE

A string is FALSE if it is empty (has zero
characters) or is "0" otherwise it is TRUE

An array or object is FALSE if it contains
no other values and is TRUE otherwise

Arrays in PHP

An array in PHP is actually an ordered map which maps values to
keys. An array can be thought of in many ways. Each of the concepts
below can be implemented in a PHP array, so you can choose which
ever of these ideas that you understand to conceptualise an array.

linearly indexed array

list (vector)

hashtable (which is an implementation of a map)



stack (LIFO)

queue (FIFO)

can easily simulate trees and linked lists with arrays of arrays

Eg: Numerically
indexed arrays (Vector array)

Say that we have a list of marks out of 100 in a subject 95, 93, 56, 70,
65, 98

array value 1


array value 2


array value 3


array value 4


array value 5


array value 6


$marks = array (95, 93, 56, 70, 65, 98);

generates a numerically
indexed array

$marks[0] = 95 ;

$marks[1] = 93 ;

$marks[2] = 56 ;

$marks[3] = 70 ;

$marks[4] = 65 ;

$marks[5] = 98 ;

Example: Numerically
indexed arrays (cont)

The following code also generates a numerically
indexed array, allocating the next index after the
highest current index to the element.

$marks[] = 95;

$marks[] = 93;

marks[0] is 95 and marks[1] is 93.

Note that array indexes start at 0 by default.

You can skip indices by allocating a specific index
to a value

$marks[5] = 56;

$marks[] = 70;

will be allocate 70 to $marks[6].

marks[5] is 56 and marks[6] is 70.

Associative arrays

Say we have a list of marks out of 100 in a subject
and we want to know who got what mark:


95, Matty

93, Lance

56, Stephen


65, Andy


$marks = array ("Adrian"=>93, "Lance"=>56,
"Stephen"=>70, "Craig"=>65, "Andy"=>98);

maps a value to a key

name is the key

mark is the value

List an associative array

list() in conjunction with each() assigns a key /
value pair into the variables $key and $variable.
The following code prints each key / value pair
into a table. Note that $value might itself be an

reset($marks); // go to the beginning of the array

echo "<table border=

while (list($key, $value) = each($marks))


echo "<tr><td>$key</td><td>$value</td></tr>


echo "</table><hr>";

List an associative array (cont)

each() actually returns a array for each array item
which includes the key and value as well as the
index 0 mapped to the key and the index 1 mapped
to the value. Reset() puts the index pointer back to
0. Hence if you are more comfortable with
numeric indexes, you can do the following:


while ($row = each($marks))


echo "Mark for $row[0] is $row[1]<br />";



Dot operator for concatenation (joining)

singly quoted read in and store literally

double quoted

certain sequences beginning with

are replaced
with special characters +

Variable names are replaced with string
representations of their values

Variable interpolation

No limit on string length

String Functions

boolean strcmp ($str1, $str2)

boolean strcasecmp ($str1, $str2)

boolean strstr ($str1, $str2)

boolean stristr ($str1, $str2)

int strlen($str)

string substr ($str, $start_pos, $len)

String functions (cont)

string chop ($str)

string ltrim ($str)

string trim ($str)

string str_replace ($old_txt, $new_txt, $text)

tring substr_replace ($old_txt, $new_txt, $text)





these last two don’t correct inappropriate upper case to lower case

Formatting User Input/Output




not magic_quotes_runtime($query)






Maths functions


/ * %


= *=

= is set to (assignment)

= = is equivalent to eg $a == $b Equal TRUE if $a is equal to $b.

= = = is identical to eg $a === $b Identical TRUE if $a is equal to $b,
and they are of the same type. (PHP 4 only)

$low_int = floor ($double)

$high_int = ceil ($double)

$nearest_int = round ($double)

(nearest even number if exactly .5)

$positive = abs ($number)

$min = min ($n1, $n2 … , $nn)

$max = max ($n1, $n2 … , $nn)

Control and flow

if (expr1) { }

elseif (expr2) { }

else { }

while (cond) { }

do { } while (cond)

switch ($var)

case a { }

case b { }

for ($i = 0; $i < expr; $i ++) { }

foreach (array_expr as $value) { }

foreach (array_expr as $key=>$value) { }

break [1]


If.. Then.. else


if ($a > $b) print "a is bigger than b";


if ($a > $b) {

print "a is bigger than b";

$b = $a;



if ($a > $b) {

print "a is bigger than b";

} elseif ($a == $b) {

print "a is equal to b";

} else {

print "a is smaller than b";



echo "You have $i ". ($i==1 ? "message" :

"messages"). " in your mailbox.


/* example 1 */

$i = 1;

while ($i <= 10) {

print $i++; /* the printed value would be

$i before the increment

increment) */


/* example 2

alternative notation to using the braces

: and endwhile*/

$i = 1;

while ($i <= 10):

print $i;



For loops

/* example 1 similar to C syntax */

for ($i = 1; $i <= 10; $i++) {

print $i;


/* example 2 */

for ($i = 1;;$i++) {

if ($i > 10) {



print $i;


/* example 3 */

$i = 1;

for (;;) {

if ($i > 10) {



print $i;



/* example 4 */

for ($i = 1; $i <= 10; print $i, $i++);


An easy way to iterate over arrays. There are two syntaxes; the second is a
minor but useful extension of the first:

foreach(array_expression as $value) statement

foreach(array_expression as $key => $value) statement

The following are functionally identical:

//example 1 //

reset ($arr);

while (list(, $value) = each ($arr)) {

echo "Value: $value<br>


//example 2 //

foreach ($arr as $value) {

echo "Value: $value<br>


Foreach cont.

/* foreach example 1: value only */

$a = array (1, 2, 3, 17);

foreach ($a as $v) {

print "Current value of
$a: $v.


/* foreach example 2: value (with key printed for illustration) */

$a = array (1, 2, 3, 17);

$i = 0; /* for illustrative purposes only */

foreach($a as $v) {

print "
$a[$i] => $v.



/* foreach example 3: key and value */

$a = array ( "one" => 1, "two" => 2, "three" => 3, "seventeen" => 17 );

foreach($a as $k => $v) {

print "
$a[$k] => $v.


Break & Continue

break ends execution of the current for, foreach while,
do..while or switch structure.

$arr = array ('one', 'two', 'three', 'four', 'stop', 'five');

while (list ($key, $val) = each ($arr)) {

if ($val == 'stop') {

break; /* You could also write 'break 1;' here. */


echo "$val<br>

} /* note list() is a multiple assignment function; the key and value returned by
each() are assigned to $key and $value. $key is not used in this example.

continue is used within looping structures to skip the rest of
the current loop iteration and continue execution at the
beginning of the next iteration.


if ($i == 0) { print "i equals 0";


if ($i == 1) { print "i equals 1";


if ($i == 2) { print "i equals 2";


/* this is equivalent */

switch ($i) {

case 0:

print "i equals 0";


case 1:

print "i equals 1";


case 2:

print "i equals 2";



require() and include()

require() includes and evaluates a specific file.

require() and include() are identical in every way except how they
handle failure. include() produces a Warning while require() results in
a Fatal Error.


require 'prepend.php';

require $somefile;

require ('somefile.txt');


require_once() or include_once() should be used in cases where the
same file might be included and evaluated more than once during a
particular execution of a script, and you want to be sure that it is
included exactly once to avoid problems with function redefinitions,
variable value reassignments, etc.

Running an Apache PHP webserver on silas

you have a silas account

login to your account using ssh (eg TeratermPro)

your home directory on silas is something like:


(you can use pwd to find out the exact path to your directory)

think of a number between 7000 and 8000 which noone else has
thought of (to use as a port number)

run the command makeserver

modify the apache/httpd.conf file

ServerAdmin whoever@wherever (change to your email address)

DirectoryIndex index.html (add index.php)

run the command startserver

you may see this error: kill: 1044559: no such process

ignore it :

stop the server with the command stopserver


It creates serveral files/directories









All of the directories start empty. The access and error logs
will be created in the logs directories once the server is

Content should be added to the htdocs directory.

Examples of PHP on Silas

Examples of PHP on Silas