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 NULL
name(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 filelist
list($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 list
personal.txt
Marty 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 arraysexplode
names.txt
Martin 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