Today’s Outline IT360: Applied Database Systems PHP Arrays, Files, Functions

advertisement
IT360: Applied Database Systems
PHP
Arrays, Files, Functions
Today’s Outline
 Arrays
 Files
 Functions
1
Arrays
<?php
require_once('page.inc.php'); require_once('arrayFunctions.inc.php');
//create the page
$myPage = new Page('Array examples');
//set the content
$myPage->content = '<p>Working with Arrays</p>';
//create an array
$array = array('thing1', 'thing2');
$array[2] = 'thing3';
$myPage->content .= '<p>'.displayArray($array) . '</p>';
//create associative array
$prices = array('Tires' => 100, 'Oil' => 10);
$prices[‘Spark plugs'] = 200;
$myPage->content .= '<p>The values in $prices array are <br />’
. displayAssociativeArray($prices) . '</p>';
sort($array); //sort array
$myPage->content .= '<p> Sorted array '.displayArray($array) . '</p>';
ksort($prices); //sort associative array by key
$myPage->content .= '<p>The values in $prices array sorted by key are <br />'
. displayAssociativeArray($prices) . '</p>';
asort($prices); //sort associative array by value
$myPage->content .= '<p>The values in $prices array sorted by value are <br />'
. displayAssociativeArray($prices) . '</p>';
//display page
$myPage->display(); ?>
array_functions.inc.php
<?php
//return a string to display an array
function displayArray($array){
$result = ‘<p>';
for($i = 0; $i < count($array); $i++){
$result .= "Element at index $i is $array[$i] <br />";
}
$result .= ‘</p>';
return $result;
}
//return a string to display an associative array
function displayAssociativeArray($array){
$result = ‘<p>';
foreach($array as $key => $value){
$result .= "Element with key $key has value $value <br />";
}
$result .= ‘</p>';
return $result;
}
?>
2
Class Exercise
 Create an array containing the following values:
(1900, 2000, 2004, 2005 ).
 Use the array in a “foreach” loop to test if the
value is a leap year.
 If it is a leap year print “XXXX is a leap year”
 Else print “XXXX is not a leap year”
 A year is a leap year if it is divisible by 4. If the
year is also divisible by 100 then it is NOT a leap
year unless it is also divisible by 400. Thus,
1900 is not a leap year (divisible by 100 but not
400) while 2000 is a leap year (divisible by 400).
3
Outline
 Arrays
 More About Files
 More About Functions
fopen() modes
r
Read only. Starts at beginning of file
r+ Read/Write. Starts at beginning of file
w
Write only. Opens and clears contents of file; or creates new file if it
doesn't exist
w+ Read/Write. Opens and clears contents of file; or creates new file if it
doesn't exist
a
Write only. Opens and writes to end of file or creates new file if it
doesn't exist
a+ Read/Write. Preserves file content by writing to end of file
x
Write only. Creates new file. Returns FALSE and error if file already
exists
x+ Read/Write. Creates new file. Returns FALSE and error if file already
exists
4
More Files: Read Line from File
 string = fgets(filePointer, [maxLength])
 string = fgetss(filePointer, [maxLength]
[, allowableTags])
 array = fgetcsv(filePointer, [maxLength] [,
string delimiter])
Read Whole File
 int readfile(fileName)
 int fpassthru(filePointer)
 array file(fileName)
 string file_get_contents(fileName)
5
Other Reads
 char fgetc(filePointer)
 string fread(filePointer, nbBytes)
Useful File Functions
 bool file_exists(fileName)
 int filesize(fileName)
 bool unlink(fileName)
6
File Locking
function save_to_file($text, $fileName = "myFile.txt"){
$fp = @fopen($fileName, 'a');
if (!$fp){
echo "<p>ERROR: Could not open file $fileName. </p>";
return FALSE;
}
else{
flock($fp, LOCK_EX);
fwrite($fp, $text);
flock($fp, LOCK_UN);
fclose($fp);
return TRUE;
}
}
Class Exercise
 Create PHP script to:
 Open/create a file, without overwriting it
 Write the numbers 1 to 20 to file, separated
by space
 Close the file
7
Outline
 Arrays
 More About Files
 More About Functions
Function Parameters
<?php
function start_table($border, $cellspacing=2,
$cellpadding=2){
echo “<table border = $border
cellspacing = $cellspacing
cellpadding = $cellpadding>”;
}
?>
 start_table(2,3,4)
 start_table(1)
 start_table(2,3)
8
Variables Scope
 Variables used in functions are visible from first
use line to end of function – local variables
 Variables used outside functions are visible from
first use line to end of file, but not inside
functions – global variables
 Superglobal variables ($_POST, $_SERVER,
…) are visible everywhere
 Keyword global makes local variables global –
not recommended
Variables Scope Example
<?php
function fn(){
$x = 'content';
}
fn();
echo 'Value of $x is '. $x;
?>
9
Variables Scope Example 2
<?php
$x = 'content 1 <br/>';
echo 'Content of $x after initialization is '. $x . '<br />';
function fn(){
echo 'Content of $x at start of function is '. $x. '<br />';
$x = 'content 2 <br/>';
echo 'Content of $x at end of function is '. $x. '<br />';
}
fn();
echo 'Value of $x after calling fn() is '. $x. ‘<br />';
?>
Summary
 Arrays
 Numerically indexed
 Associative
 Sort
 Files
 Functions to work with files
 File locking
 Functions
 Optional parameters
 Variable scope
10
Download