Except where otherwise noted, the contents of this document are Copyright 2012 Marty Stepp, Jessica Miller, Victoria Kirst and Roy McElmurry IV. All rights reserved. Any redistribution, reproduction, transmission, or storage of part or all of the contents in any form is prohibited without the author's expressed written permission.
$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
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 arraysexplode
names.txt
Martin 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
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
NULL
$name = "Victoria"; $name = NULL; if (isset($name)) { print "This line isn't going to be reached.\n"; }
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
$_GET
$user_name = $_GET["username"]; $id_number = (int) $_GET["id"]; $eats_meat = FALSE; if (isset($_GET["meat"])) { $eats_meat = TRUE; }
$_GET["parameter name"]
returns an HTTP GET parameter's value as a string
http://....?name=value&name=value
are GET parametersisset
$base = $_GET["base"]; $exp = $_GET["exponent"]; $result = pow($base, $exp); print "$base ^ $exp = $result";
exponent.php?base=3&exponent=4
<?php foreach ($_GET as $param => $value) { ?> <p>Parameter <?= $param ?> has value <?= $value ?></p> <?php } ?>
print_params.php?name=Marty+Stepp&sid=1234567
Parameter name has value Marty Stepp
Parameter sid has value 1234567
print_r
or var_dump
on $_GET
for debugging
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
file
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 $line; }
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 filelist
list($var1, ..., $varN) = array;
personal.txt
Marty Stepp (206) 685 2181 570-86-7326
list($name, $phone, $ssn) = file("personal.txt"); ... list($area_code, $prefix, $suffix) = explode(" ", $phone);
list
function "unpacks" an array into a set of variables you declare
file
and list
to unpack it
function | description |
---|---|
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" )
|
scandir |
returns an array of all file names in a given directory (returns just the file names, such as "myfile.txt" )
|
glob
can accept a general path with the *
wildcard character (more powerful)
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) . "\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 foreach (scandir("taxes/old") as $filename) { ?> <li>I found a file: <?= $filename ?></li> <?php } ?> </ul>
scandir
includes current directory ("."
) and parent (".."
) in the array
basename
with scandir
; returns file names only without directory
# 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 overwrite