Command line interpreter: php
not interactive
must enclose executable statements in
Variables
Do not have to be declared
Start with $
Strings: $vars inside double quotes are interpolated while they
are literal inside single quotes
e.g. $a = 20
"$a" = "20"
'$a' = '$a'
Put curly braces around vars to indicate where they begin and end
e.g.; "{$a}lbs" = "20lbs"
Concatenation operator is .
casts ints and doubles to strings
String comparison is same as numeric comparison: ==, !=, <, >, etc.
Useful functions
substr($str, position, length)
position starts at 0
if position is negative then substr counts from the end of the
string
if length is omitted then you get the rest of the string starting
from position
strlen($str): returns the length of the string
strpos($str, $substr): returns the position of the first occurrence
of $substr or NULL
$array = explode(char, $string): returns an array that splits the
string based on the delimiter character. It will not collapse
white space. For example:
$array = explode(" ", "a b") returns the array ("a", "", "b")
$array = preg_split("/perl_pattern/", $string): returns an array that
splits the string based on the given perl pattern
$array = preg_split("/\s+/", a b") returns ("a", "b")
explode is faster if you have a simple delimiter
Data Types
boolean: TRUE/FALSE or true/false
gettype($var): returns the type of the variable
legitimate types:
integer
boolean
double
string
array
e.g., $a = 6.2;
if (gettype($a) == double) ...
settype($var, "type"): coerces value of $var to that type
e.g., $a = "10"
settype($a, "integer"); // $a = 10
Conditionals
2 versions for and/or
and/&&: && has higher precedence than and
or/||: || has higher precedence than ||
elseif used instead of "else if" but "else if" works too
switch: works with numbers and strings
use multiple case statements if multiple cases for the same code
use break to avoid executing the next case code
default keyword: executes the default code
Functions
introduced with function keyword
use global keyword to declare a variable global within a function
e.g., function change_value() {
global $value;
$value = $value * 2;
include keyword
include "tax.php"; // includes this file
include_once "tax.php"; // guarantees that the code for tax.php
// is only loaded once
include_once should be placed in front of a file every time it is loaded.
include_once checks to see if the file has already been loaded and, if
so, does nothing. However, suppose you try something like:
include_once "tax.php";
include "tax.php";
In this case tax.php gets reloaded because the second include does not
check whether or not tax.php has already been loaded
useful numeric functions
floor
ceil
max
min
rand(min,max): numberes between min/max inclusive
printf
place ' before padding char for a decimal number
e.g., printf("'05d", $a); // pads with 0's instead of spaces
sprintf fct returns a string: $a = sprintf(...)'
arrays
numeric arrays
ways to create
1) $names = array("Peter","Quagmire","Joe");
2) $names[0] = "Peter"; $names[1] = "Quagmire";
3) $names[] = "Peter"; $names[] = "Quagmire";
array[] = value: appends value to the array
associative arrays
ways to create
1) $ages = array("Peter"=>32, "Quagmire"=>30, "Joe"=>34);
2) $ages['Peter'] = "32"; $ages['Quagmire'] = 30;
multi-dimensional arrays
ways to create
1) $families = array("Griffin"=>array("Peter","Lois","Megan"),
"Quagmire"=>array("Glenn","Joe"),
"Seuss"=>array("Mary","Nicole","Sue","Frank"));
access: $families['Griffin'][0];
useful functions
print_r($array): prints the elements of the array in a nice format
count($array): number of elements in the array
array_key_exists(): Checks if the specified key exists in the array
in_array($value, $array): Checks if the designated value is in the array,
regardless of whether it is a numeric array or an associative array
array_push: Inserts one or more elements to the end of an array
e.g., array_push($a, 10, 20, 30);
array_shift(): Removes the first element from an array and returns the
value of the removed element (not the key)
array_unshift: Inserts one or more elements at the front of the array
e.g., $a[0] = 10;
array_unshift($a, 1, 2, 3);
print_r($a);
output:
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 10
)
asort($array,[sorttype]), arsort($array,[sorttype]): sorts the array
based on element value in ascending/descending value. sorttype is
optional and may be either the constant SORT_NUMERIC or SORT_STRING
ksort($array,[sorttype]), krsort($array,[sorttype]): sorts the array
based on key value in ascending/descending value. sorttype is
optional and may be either the constant SORT_NUMERIC or SORT_STRING
Loops
while, for, and do..while are same as C
foreach($array as $value): assigns each element of a numeric array or
each key of an associative array to $value
foreach($array as $key=>$value): binds each value in an associative array
to its key. The key and value are assigned to $key and $value
Regular Expressions
preg_match("/perl pattern/", $string, $array): returns true if the
given pattern matches any subexpression in the string
--first entry in $array is the full match
--remaining entries contain matches for the parenthesized expressions
Example: preg_match("/\b(\d{1,2})\/\d{1,2}\/(\d{4})\b/", "brad 2/3/1964 42",
$matches);
$matches = (2/3/1964, 2, 1964)
preg_match_all("/perl pattern/", $string, $array): Searches string for all
matches to the given pattern and puts them in $array.
--returns the number of matches found
--first entry in $array is an array of all matches
--remaining entries in $array are arrays containing matches for the
first, second, third, etc. parenthesized expressions.
Example: preg_match_all("/\b(\d{1,2})\/\d{1,2}\/(\d{4})\b/",
"1/3/1964 2/3/1964 9/8/1965 10/28/1930", $matches);
$matches
Array
(
[0] => Array
(
[0] => 1/3/1964
[1] => 2/3/1964
[2] => 9/8/1965
[3] => 10/28/1930
)
[1] => Array
(
[0] => 1
[1] => 2
[2] => 9
[3] => 10
)
[2] => Array
(
[0] => 1964
[1] => 1964
[2] => 1965
[3] => 1930
)
)
preg_replace($pattern, $replacement, $string, $limit): replaces
with $replacement all subexpressions in $string that match $pattern
--if limit is specified then the number of replaced subexpressions
is limited to the value of limit
--$string can be an array of strings in which case all strings in
$string are searched and replaced
--$pattern and $replacement can also be arrays in which case the
pattern at $pattern[i] is replaced with $replacement[i]
Example: $pattern = "/\b(\d{1,2})\/(\d{1,2})\/\d{2}(\d{2})\b/";
$replace = "$1/$2/$3";
$s = preg_replace($pattern, $replace, "brad 2/3/1964 42");
print($s)."\n";
Result: brad 2/3/64 42
--$0 contains the entire matched pattern
--note the lack of delimiters for the replacement pattern
Retrieving Form Data
$_POST and $_GET contain keyword/value pairs for post and get methods
$_REQUEST contains contents of $_GET, $_POST, and $_COOKIE
Functions for Validating Form Data
empty($var): returns true if variable is 0 or an empty string--useful for
checking that text boxes haven't been left blank
isset($var): returns true if variable has a value, including 0 or an empty
string--useful for checking to ensure that the user entered a value for
a form element
e.g., isset($_POST['age'])
is_numeric($var): returns true if variable is numeric or can be converted
to a number. If the value is a string then the entire string must be
a number for is_numeric to return true. For example, is_numeric('10cubs')
returns false.
CGI stuff
id attribute: The ID attribute is used to explicitly associate the specific
Input tag with a specific LABEL tag. ID attributes are unique within
a page.
--see ~bvz/www-home/cgi-bin/upload.html for an example
label element: Used to provide a label for an input element in the browser
Note the following things about the upload.html file:
1) The enctype attribute of the