Except where otherwise noted, the contents of this presentation are Copyright 2010 Marty Stepp and Jessica Miller.
NULL
$name = "Victoria";
$name = NULL;
if (isset($name)) {
print "This line isn't going to be reached.\n";
}
$name = array(); # create $name = array(value0, value1, ..., valueN); $name[index] # get element value $name[index] = value; # set element value $name[] = value; # append
$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)
| 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 |
$tas = array("MD", "BH", "KK", "HM", "JP");
for ($i = 0; $i < count($tas); $i++) {
$tas[$i] = strtolower($tas[$i]);
} # ("md", "bh", "kk", "hm", "jp")
$morgan = array_shift($tas); # ("bh", "kk", "hm", "jp")
array_pop($tas); # ("bh", "kk", "hm")
array_push($tas, "ms"); # ("bh", "kk", "hm", "ms")
array_reverse($tas); # ("ms", "hm", "kk", "bh")
sort($tas); # ("bh", "hm", "kk", "ms")
$best = array_slice($tas, 1, 2); # ("hm", "kk")
foreach loop
(5.4.4)
foreach ($array as $variableName) {
...
}
$stooges = array("Larry", "Moe", "Curly", "Shemp");
for ($i = 0; $i < count($stooges); $i++) {
print "Moe slaps {$stooges[$i]}\n";
}
foreach ($stooges as $stooge) {
print "Moe slaps $stooge\n"; # even himself!
}
$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) {
$tokens = explode(" ", $name);
?>
<p> author: <?= $tokens[2] ?>, <?= $tokens[0] ?> </p>
<?php
}
author: Stepp, Marty
author: Miller, Jessica
author: Kirst, Victoria
URL?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(parameterName, ..., parameterName) {
statements;
}
function bmi($weight, $height) {
$result = 703 * $weight / $height / $height;
return $result;
}
return statements is implicitly "void"name(expression, ..., expression);
$w = 163; # pounds $h = 70; # inches $my_bmi = bmi($w, $h);
$school = "UW"; # global ... function downgrade() { global $school; $suffix = "(Wisconsin)"; # local $school = "$school $suffix"; print "$school\n"; }
global statement
function name(parameterName = value, ..., parameterName = value) {
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
| 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 r u? I'm fine |
array( "Hello\n", # 0 "how r u?\n", # 1 "\n", # 2 "I'm fine\n" # 3 ) |
"Hello\n how r u?\n # a single \n # string I'm fine\n" |
file function returns lines of a file as an array (\n at end of each)file_get_contents returns entire contents of a file as a single string
file_put_contents writes a string into a file
# 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 its old 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 parameter to append (add to the end) rather than overwritefile function# display lines of file as a bulleted list $lines = file("todolist.txt"); foreach ($lines as $line) { # for ($i = 0; $i < count($lines); $i++) print "<li>$line</li>\n"; }
file returns the lines of a file as an array of strings
\n ; to strip it, use an optional second parameter:
$lines = file("todolist.txt", FILE_IGNORE_NEW_LINES);
foreach or for loop over lines of filelistlist($var1, ..., $varN) = array;
personal.txtMarty Stepp (206) 685-2181 570-86-7326
list($name, $phone, $ssn) = file("personal.txt");
...
list function "unpacks" an array into a set of variables you declare
file and list to unpack it
| 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 accept a general path with the * wildcard 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 "<p>I just reversed " . basename($poemfile) . "</p>\n";
}
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"
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) {
print "<li>$filename</li>\n"
}
?>
</ul>
scandir sucks; current directory (".") and parent ("..") are included in the arraybasename with scandir; returns file names only without directory