Except where otherwise noted, the contents of this presentation are Copyright 2009 Marty Stepp and Jessica Miller.
function name(parameterName, ..., parameterName) {
statements;
}
function quadratic($a, $b, $c) {
return -$b + sqrt($b * $b - 4 * $a * $c) / (2 * $a);
}
return statements implicitly returns NULLname(expression, ..., expression);
$x = -2; $a = 3; $root = quadratic(1, $x, $a - 2);
function name(parameterName, ..., parameterName) {
statements;
}
function print_separated($str, $separator = ", ") {
if (strlen($str) > 0) {
print $str[0];
for ($i = 1; $i < strlen($str); $i++) {
print $separator . $str[$i];
}
}
}
print_separated("hello"); # h, e, l, l, o
print_separated("hello", "-"); # h-e-l-l-o
$school = "UW"; # global ... function downgrade() { global $school; $suffix = "Tacoma"; # local $school = "$school $suffix"; print "$school\n"; }
global statementURL?name=value&name=value...
http://www.google.com/search?q=Obama http://example.com/student_login.php?username=stepp&id=1234567
username has value stepp, and sid has value 1234567$_REQUEST
(6.4.2)
$user_name = $_REQUEST["username"];
$id_number = (int) $_REQUEST["id"];
$eats_meat = FALSE;
if (isset($_REQUEST["meat"])) {
$eats_meat = TRUE;
}
$_REQUEST["parameter name"] returns a parameter's value as a string
isset| function name(s) | category |
|---|---|
file,
file_get_contents, file_put_contents
|
reading/writing entire files |
basename,
file_exists,
filesize, fileperms,
filemtime,
is_dir, is_readable,
is_writable,
disk_free_space
|
asking for information |
copy,
rename,
unlink, chmod,
chgrp,
chown, mkdir,
rmdir
|
manipulating files and directories |
glob,
scandir
|
reading directories |
| contents of foo.txt | file("foo.txt") |
file_get_contents("foo.txt") |
|---|---|---|
Hello how are you? I'm fine |
array( "Hello\n", # 0 "how are\n", # 1 "you?\n", # 2 "\n", # 3 "I'm fine\n" # 4 ) |
"Hello\n how are\n you?\n \n I'm fine\n" |
file returns lines of a file as an arrayfile_get_contents returns entire contents of a file as a string# reverse a file
$text = file_get_contents("poem.txt");
$text = strrev($text);
file_put_contents("poem.txt", $text);
file_get_contents returns entire contents of a file as a string
file_put_contents writes a string into a file, replacing any prior contents# add a line to a file
$new_text = "P.S. ILY, GTG TTYL!~";
file_put_contents("poem.txt", $new_text, FILE_APPEND);
| old contents | new contents |
|---|---|
Roses are red, Violets are blue. All my base, Are belong to you. |
Roses are red, Violets are blue. All my base, Are belong to you. P.S. ILY, GTG TTYL!~ |
file_put_contents can be called with an optional third parameterfile function# display lines of file as a bulleted list
$lines = file("todolist.txt");
foreach ($lines as $line) {
?>
<li> <?= $line ?> </li>
<?php
}
file returns the lines of a file as an array of strings
\n\n off each line, use optional second parameter:
$lines = file("todolist.txt", FILE_IGNORE_NEW_LINES);
foreach loop over lines of filelistlist($var1, ..., $varN) = array;
$values = array("stepp", "17", "m", "94");
...
list($username, $age, $gender, $iq) = $values;
list function accepts a comma-separated list of variable names as parameters$username instead of $values[0], etc.
file and listpersonal.txtMarty Stepp (206) 685-2181 570-86-7326
list($name, $phone, $ssn) = file("personal.txt");
...
file and list to quickly examine it
$array = explode(delimiter, string); $string = implode(delimiter, array);
$s = "CSE 190 M";
$a = explode(" ", $s); # ("CSE", "190", "M")
$s2 = implode("...", $a); # "CSE...190...M"
explode and implode convert between strings and arraysexplodenames.txtMartin D Stepp Jessica K Miller Victoria R Kirst
foreach (file("names.txt") as $name) {
list($first, $mid, $last) = explode(" ", $name);
?>
<p> author: <?= $last ?>, <?= $first ?> </p>
<?php
}
author: Stepp, Marty
author: Miller, Jessica
author: Kirst, Victoria
| function | description |
|---|---|
scandir |
returns an array of all file names in a given directory (returns just the file names, such as "myfile.txt")
|
glob |
returns an array of all file names that match a given pattern (returns a file path and name, such as "foo/bar/myfile.txt")
|
glob can filter by accepting wildcard paths with the * character
glob example
# reverse all poems in the poetry directory
$poems = glob("poetry/poem*.dat");
foreach ($poems as $poemfile) {
$text = file_get_contents($poemfile);
file_put_contents($poemfile, strrev($text));
print "I just reversed " . basename($poemfile);
}
glob can match a "wildcard" path with the * character
glob("foo/bar/*.doc") returns all .doc files in the foo/bar subdirectory
glob("food*") returns all files whose names begin with "food"
glob("lecture*/slides*.ppt") examines all directories whose names begin with lecture and grabs all files whose names begin with "slides" and end with ".ppt"
basename function strips any leading directory from a file path
basename("foo/bar/baz.txt") returns "baz.txt"
scandir example
<ul>
<?php
$folder = "taxes/old";
foreach (scandir($folder) as $filename) {
?>
<li> <?= $filename ?> </li>
<?php
}
?>
</ul>
".") and parent directory ("..") are included in the arraybasename with scandir because it returns the file's names only