PHP (Hypertext Preprocessor) is a popular open-source server-side scripting language
1.
PHP Introduction
Dr.GINNE MJAMES
Assistant Professor
Department of Computer Science with Data Analytics
Sri Ramakrishna College of Arts and Science
Coimbatore - 641 006
Tamil Nadu, India
1
CS380
3
Arrays
Append: usebracket notation without specifying an index
Element type is not specified; can mix types
$name = array(); # create
$name = array(value0, value1, ..., valueN);
$name[index] # get element value
$name[index] = value; # set element value
$name[] = value; # append
PHP
$a = array(); # empty array (length 0)
$a[0] = 23; # stores 23 at index 0 (length 1)
$a2 = array("some", "strings", "in", "an", "array");
$a2[] = "Ooh!"; # add string to end (at index 5)
PHP
4.
4
Array functions
function name(s)description
count number of elements in the array
print_r print array's contents
array_pop, array_push,
array_shift, array_unshift
using array as a stack/queue
in_array, array_search,
array_reverse,
sort, rsort, shuffle
searching and reordering
array_fill, array_merge,
array_intersect,
array_diff, array_slice, range
creating, filling, filtering
array_sum, array_product,
array_unique,
array_filter, array_reduce
processing elements
5.
CS380
5
Array function example
the array in PHP replaces many other collections in Java
list, stack, queue, set, map, ...
$tas = array("MD", "BH", "KK", "HM", "JP");
for ($i = 0; $i < count($tas); $i++) {
$tas[$i] = strtolower($tas[$i]);
}
$morgan = array_shift($tas);
array_pop($tas);
array_push($tas, "ms");
array_reverse($tas);
sort($tas);
$best = array_slice($tas, 1, 2);
PHP
6.
CS380
6
foreach loop
foreach ($arrayas $variableName) {
...
}
PHP
$fellowship = array(“Frodo", “Sam", “Gandalf",
“Strider", “Gimli", “Legolas", “Boromir");
print “The fellowship of the ring members are: n";
for ($i = 0; $i < count($fellowship); $i++) {
print "{$fellowship[$i]}n";
}
print “The fellowship of the ring members are: n";
foreach ($fellowship as $fellow) {
print "$fellown";
}
PHP
CS380
11
Regular expressions
[a-z]at #cat,rat, bat…
[aeiou]
[a-zA-Z]
[^a-z] #not a-z
[[:alnum:]]+ #at least one alphanumeric char
(very) *large #large, very very very large…
(very){1, 3} #counting “very” up to 3
^bob #bob at the beginning
com$ #com at the end
PHPRegExp
Regular expression: a pattern in a piece of text
PHP has:
POSIX
Perl regular expressions
13
Printing HTML tagsin PHP = bad
style
<?php
print "<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML
1.1//EN"n";
print " "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
n";
print "<html xmlns="http://www.w3.org/1999/xhtml">n";
print " <head>n";
print " <title>Geneva's web page</title>n";
...
for ($i = 1; $i <= 10; $i++) {
print "<p> I can count to $i! </p>n";
}
?>
HTML
best PHP style is to minimize print/echo statements in
embedded PHP code
but without print, how do we insert dynamic content into the
page?
14.
CS380
14
PHP expression blocks
PHP expression block: a small piece of PHP that evaluates and
embeds an expression's value into HTML
<?= expression ?> is equivalent to:
<?= expression ?>
PHP
<h2> The answer is <?= 6 * 7 ?> </h2>
PHP
The answer is 42
output
<?php print expression; ?>
PHP
15.
15
Expression block example
<!DOCTYPEhtml PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>CSE 190 M: Embedded PHP</title></head>
<body>
<?php
for ($i = 99; $i >= 1; $i--) {
?>
<p> <?= $i ?> bottles of beer on the wall, <br />
<?= $i ?> bottles of beer. <br />
Take one down, pass it around, <br />
<?= $i - 1 ?> bottles of beer on the wall. </p>
<?php
}
?>
</body>
</html> PHP
16.
CS380
16
Common errors: unclosedbraces,
missing = sign
...
<body>
<p>Watch how high I can count:
<?php
for ($i = 1; $i <= 10; $i++) {
?>
<? $i ?>
</p>
</body>
</html> PHP
if you forget to close your braces, you'll see an error about
'unexpected $end'
if you forget = in <?=, the expression does not produce any
output
17.
CS380
17
Complex expression blocks
...
<body>
<?php
for($i = 1; $i <= 3; $i++) {
?>
<h<?= $i ?>>This is a level <?= $i ?>
heading.</h<?= $i ?>>
<?php
}
?>
</body> PHP
This is a level 1 heading.
This is a level 2 heading.
This is a level 3 heading. output
CS380
19
Functions
function name(parameterName, ...,parameterName) {
statements;
} PHP
function quadratic($a, $b, $c) {
return -$b + sqrt($b * $b - 4 * $a * $c) / (2
* $a);
} PHP
parameter types and return types are not written
a function with no return statements implicitly returns NULL
20.
CS380
20
Default Parameter Values
functionprint_separated($str, $separator = ", ") {
if (strlen($str) > 0) {
print $str[0];
for ($i = 1; $i < strlen($str); $i++) {
print $separator . $str[$i];
}
}
} PHP
print_separated("hello"); # h, e, l, l, o
print_separated("hello", "-"); # h-e-l-l-o
PHP
if no value is passed, the default will be used
21.
CS380
21
PHP Arrays Ex.1
Arrays allow you to assign multiple values to one variable. For
this PHP exercise, write an array variable of weather conditions
with the following values: rain, sunshine, clouds, hail, sleet, snow,
wind. Using the array variable for all the weather conditions,
echo the following statement to the browser:
We've seen all kinds of weather this month. At the beginning of the
month, we had snow and wind. Then came sunshine with a few
clouds and some rain. At least we didn't get any hail or sleet.
Don't forget to include a title for your page, both in the header
and on the page itself.
22.
CS380
22
PHP Arrays Ex.2
For this exercise, you will use a list of ten of the largest cities in
the world. (Please note, these are not the ten largest, just a
selection of ten from the largest cities.) Create an array with the
following values: Tokyo, Mexico City, New York City, Mumbai,
Seoul, Shanghai, Lagos, Buenos Aires, Cairo, London.
Print these values to the browser separated by commas, using a
loop to iterate over the array. Sort the array, then print the
values to the browser in an unordered list, again using a loop.
Add the following cities to the array: Los Angeles, Calcutta,
Osaka, Beijing. Sort the array again, and print it once more to
the browser in an unordered list.
Editor's Notes
#5 Maybe delete the comments that give out the output
# ("md", "bh", "kk", "hm", "jp")
# ("bh", "kk", "hm")
# ("bh", "kk", "hm", "ms")
# ("ms", "hm", "kk", "bh")
# ("bh", "hm", "kk", "ms")
# ("hm", "kk")
#6 One bad thing with foreach: you cannot change the value of the variable after “as”, you can just assign it a value, it does not have the value in the table
#7 Maybe delete the comments that give out the output
#14 useful for embedding a small amount of PHP (a variable's or expression's value) in a
large block of HTML without having to switch to "PHP-mode"